我尝试使用多个分隔符拆分字符串。我需要保持分隔符为单词。 我使用的分隔符是:所有标点符号和空格。在
例如,字符串:
Je suis, FOU et toi ?!
应产生:
^{pr2}$我写道:
class Parser :
def __init__(self) :
"""Empty constructor"""
def read(self, file_name) :
from string import punctuation
with open(file_name, 'r') as file :
for line in file :
for word in line.split() :
r = re.compile(r'[\s{}]+'.format(re.escape(punctuation)))
print(r.split(word))
但我得到的结果是:
['Je']
['suis', '']
['FOU']
['et']
['toi']
['', '']
拆分似乎正确,但结果列表不包含分隔符:(
您需要将表达式放入一个组中,
re.split()
才能保留它。我不会先拆分空格;以后总是可以只删除空白字符串。如果要将每个标点符号分隔开,则应仅在\s
空白组中使用+
量词:列表理解将删除仅由空白组成的任何内容:
^{pr2}$您还可以使用
re.findall()
查找所有单词或标点序列,而不是拆分:这样做的好处是不需要过滤掉空白:
相关问题 更多 >
编程相关推荐