字符串与文本01-分割字符串 / 字符串头尾匹配 / Shell通配符匹配字符串

使用多个界定符分割字符串

  • 使用 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

猜你喜欢

转载自blog.csdn.net/xiangchi7/article/details/82374458
今日推荐