python字符串处理总结

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

import re
line = 'asdf fjdk; afed, fjek,asdf, foo'
result = re.split(r'[,;\s]\s*', line)
print(result)

使用re模块,使用正则匹配',',';‘以及空格,并且在分隔符后面可以带多个空格。

字符串开头或结尾匹配

>>> filename = 'spam.txt'
>>> filename.endswith('.txt')
True
>>> filename.startswith('file:')
False
>>> url = 'http://www.python.org'
>>> url.startswith('http:')
True

如果你想检查多种匹配可能,只需要将所有的匹配项放入到一个元组中去, 然后传给 startswith() 或者 endswith() 方法:

>>> import os
>>> filenames = os.listdir('.')
>>> filenames
[ 'Makefile', 'foo.c', 'bar.py', 'spam.c', 'spam.h' ]
>>> [name for name in filenames if name.endswith(('.c', '.h'))]
['foo.c', 'spam.c', 'spam.h'
>>> any(name.endswith('.py') for name in filenames)
True

下面是另一个例子:

from urllib.request import urlopen

def read_data(name):
    if name.startswith(('http:', 'https:', 'ftp:')):
        return urlopen(name).read()
    else:
        with open(name) as f:
            return f.read()

如果传入的是三个协议的url,用urlopen方法读取数据,否则直接作为文件数据读取。 检查某个文件夹中是否存在指定的文件类型:

if any(name.endswith('.c', '.h') for name in listdir(dirname)):
...