Miscellaneous String Methods¶
Batteries Included: Checks¶
Lots of small checks (returning boolean) - for example …
'...'.isspace()
: contains only whitespaceCharacter types
'...'.isalpha()
'...'.isalnum()
'...'.isdigit()
Case tests
'...'.isupper()
'...'.islower()
'...'.isidentifier()
: a valid python identifier (e.g. variable name)Lots of others ⟶ save work and RTFM prior to coding
Batteries Included: Search¶
Substring search …
'...'.count(s)
: number of occurences ofs
'...'.startswith(s)
,.endswith(s)
'...'.find(sub[, start[, end]])
: findsub
, starting atstart
(default 0), ending atend
(defaultlen()
)end
is exclusive ⟶'...'[start:end]
Returns index, or -1 if not found
'...'.index(sub[, start[, end]])
: like find, but raises exception if not found'...'.rfind(sub[, start[, end]])
: from the end'...'.rindex(sub[, start[, end]])
: from the end
Substring Search: Examples¶
>>> '/etc/passwd'.startswith('/etc/')
True
>>> 'notes.txt'.endswith('.txt')
True
>>> 'this is a thistle with many thorns'.count('th')
4
>>> 'haystack containing needle and straw'.find('needle')
20
>>> 'haystack containing needle and straw'.find('mouse')
-1
>>> 'haystack containing needle and straw'.index('mouse')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
Split and Join (1)¶
Very common operations
Error prone ⟶ writing them is a major annoyance
Off-by-one errors
>>> 'one:two:three'.split(':')
['one', 'two', 'three']
>>> ':'.join(['one', 'two', 'three'])
'one:two:three'
>>> ':'.join([])
''
>>> ':'.join(['one'])
'one'
Split and Join (2)¶
>>> 'one:two:three:four'.split(':', 2)
['one', 'two', 'three:four']
>>> 'one:two:three:four'.rsplit(':', 2)
['one:two', 'three', 'four']
>>> username,rest = 'jfasch:x:1000:...'.split(':', 1)
>>> username
'jfasch'
>>> rest
'x:1000:1000::/home/jfasch:/bin/bash'