使用多个界定符分割字符串
使用 split()
例:将一个字符串分为多个字段
aString = "vnein,fslf,lfejf,nldsl,sjpa"
print(aString.split(',')) #['vnein', 'fslf', 'lfejf', 'nldsl', 'sjpa']
注:string 对象的 split() 方法只适应于非常简单的字符串分割情形”’
使用 re.split()
astring = 'asdf fjdk; afed, fjek,asdf, foo'
import re
print(re.split(r'[;,\s]\s*',astring))
#['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']
字符串开头或结尾匹配
使用 startswith() / endswith()
'''最简单容易的匹配'''
filename = 'what_the_fuck.txt'
print(filename.startswith('what')) #True
print(filename.endswith('txt')) #True
url = 'http://www.baidu.com'
print(url.startswith('http:')) #True
''' 如果想检查多种匹配可能,只需要将所有的匹配项放入到一个元组中去,记住,是元组'''
#例:匹配列表中的py文件
mlist = [
'one.txt',
'two.jpg',
'three.txt',
'four.py',
'five.py',
'six.jpg',
'seven.txt'
]
print([file for file in mlist if file.endswith(('txt','py'))])
#['one.txt', 'three.txt', 'four.py', 'five.py', 'seven.txt']
使用切片
'''切片实现'''
filename = 'what_the_fuck.txt'
print(filename[:4]=='what') #True
print(filename[-4:]=='.txt') #True
使用正则
import re
url = 'http://www.python.org'
print(re.match('http:|https:|ftp:', url))
#<_sre.SRE_Match object; span=(0, 5), match='http:'>
用 Shell 通配符匹配字符串
使用 fnmatch()
from fnmatch import fnmatch
#配匹字符串
print(fnmatch('foo.txt', '*.txt')) #True
print(fnmatch('foo.txt', '?oo.txt')) #True
print(fnmatch('Dat45.csv', 'Dat[0-9]*')) #True
#列表也能轻而易举地用fnmatch()匹配
names = ['Dat1.csv', 'Dat2.csv', 'config.ini', 'foo.py']
print([name for name in names if fnmatch(name, 'Dat*.csv')])
#['Dat1.csv', 'Dat2.csv']
fnmatch() 函数使用底层操作系统的大小写敏感规则 (不同的系统是不一样的)来匹配模式。
#在OS X (Mac) 中会要求大小写统一
print(fnmatch('foo.txt', '*.TXT')) #False
#而在windows中,则忽略大小写
print(fnmatch('foo.txt', '*.TXT')) #True
使用 fnmatchcase()
此方法与上面方法一样,只是完全不必考虑底层系统对大小写敏感的问题,如
from fnmatch import fnmatchcase
print(fnmatchcase('foo.txt', '*.TXT')) #False