用正则表达式库重新分割一行

时间:2019-02-13 13:03:18

标签: python-3.x

我是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}
{''}

我的正则表达式有什么问题吗? 任何建议都会有帮助

预先感谢

1 个答案:

答案 0 :(得分:0)

那些空字符串(不是“空格”)来自给定模式的两个连续匹配项,或者匹配项位于字符串的两端,例如,将两个逗号,,的字符串与regex将导致3个空字符串-一个在逗号之前,一个在逗号之间,另一个在逗号之后。

出于您的目的,应使用re.findall来避免获取空字符串:

for word in re.findall(r'[^ .,\n]+', line):