我是python的新手,我正在尝试使用re库拆分一行,但是列表中包含“空格”。
import re
BoW = {}
f = open('TestPython.txt', 'r')
for line in f:
for word in re.split(" |,|, |\n|\.",line.rstrip()):
if word in BoW.keys():
BoW[word]+=1
else:
BoW[word]=1
print(BoW)
key = max(BoW, key=lambda k: BoW[k])
print({key})
这是我在频率为2的空间中得到的结果。
{'This': 1, 'is': 1, 'a': 1, 'test': 1, 'document': 1,
'': 2, 'To': 1, 'read': 1, 'the': 2, 'file;': 1, 'line': 2,
'by': 1, 'Thanks': 1, 'and': 1, 'Regards': 1}
{''}
我的正则表达式有什么问题吗? 任何建议都会有帮助
预先感谢
答案 0 :(得分:0)
那些空字符串(不是“空格”)来自给定模式的两个连续匹配项,或者匹配项位于字符串的两端,例如,将两个逗号,,
的字符串与regex将导致3个空字符串-一个在逗号之前,一个在逗号之间,另一个在逗号之后。
出于您的目的,应使用re.findall
来避免获取空字符串:
for word in re.findall(r'[^ .,\n]+', line):