On 2022-06-08, dn <pythonl...@danceswithmice.info> wrote: > On 08/06/2022 10.18, De ongekruisigde wrote: >> On 2022-06-08, Christian Gollwitzer <aurio...@gmx.de> wrote: >>> Am 07.06.22 um 21:56 schrieb Dave: >>>> It depends on the language I’m using, in Objective C, I’d use isNumeric, >>>> just wanted to know what the equivalent is in Python. >>>> >>> >>> Your problem is also a typical case for regular expressions. You can >>> create an expression for "starts with any number of digits plus optional >>> whitespace" and then replace this with nothing: >> >> Regular expressions are overkill for this and much slower than the >> simple isdigit based solution. > > ... > >> Regular expressions are indeeed extremely powerful and useful but I tend >> to avoid them when there's a (faster) normal solution. > > Yes, simple solutions are (likely) easier to read.
Depending on the problem a regular expression may be the much simpler solution. I love them for e.g. text parsing and use them all the time. Unrivaled when e.g. parts of text have to be extracted, e.g. from lines like these: root:x:0:0:System administrator:/root:/run/current-system/sw/bin/bash dhcpcd:x:995:991::/var/empty:/run/current-system/sw/bin/nologin nm-iodine:x:996:57::/var/empty:/run/current-system/sw/bin/nologin avahi:x:997:996:avahi-daemon privilege separation user:/var/empty:/run/current-system/sw/bin/nologin sshd:x:998:993:SSH privilege separation user:/var/empty:/run/current-system/sw/bin/nologin geoclue:x:999:998:Geoinformation service:/var/lib/geoclue:/run/current-system/sw/bin/nologin Compare a regexp solution like this: >>> g = re.search(r'([^:]*):([^:]*):(\d+):(\d+):([^:]*):([^:]*):(.*)$' , s) >>> print(g.groups()) ('geoclue', 'x', '999', '998', 'Geoinformation service', '/var/lib/geoclue', '/run/current-system/sw/bin/nologin') to the code one would require to process it manually, with all the edge cases. The regexp surely reads much simpler (?). > RegEx-s are more powerful (and well worth learning for this reason), but > are only 'readable' to those who use them frequently. > > Has either of you performed a timeit comparison? No need: the isdigit solution doesn't require the overhead of a regex processor. -- <StevenK> You're rewriting parts of Quake in *Python*? <knghtbrd> MUAHAHAHA -- https://mail.python.org/mailman/listinfo/python-list