2015-10-06 40 views
2

编写一个简单的脚本来将大文本文件解析为单词,它们的父句和一些元数据(它们是否在引号内等)。试图让正则表达式正常运行并遇到一个奇怪的问题。这里有一小部分测试代码展示了我的解析过程。白色空间是故意的,但我不明白为什么最后的'单词'不解析。它没有任何有问题的字符(至少就我可以告诉使用repr而言)以及当我只在问题“单词”上运行parse()时,它会返回单个单词和空格的预期数组。为什么不是这个正则表达式解析整个字符串?

代码:

def parse(new_line): 
    new_line = new_line.rstrip() 
    word_array = re.split('([\.\?\!\ ])',new_line,re.M) 
    print(word_array) 

x = full_text.readline() 
print(repr(x)) 
parse(x) 

输出:

'Far out in the uncharted backwaters of the unfashionable end of the western spiral arm of the Galaxy\n' 

['Far', ' ', 'out', ' ', 'in', ' ', 'the', ' ', 'uncharted', ' ', 'backwaters', ' ', 'of', ' ', 'the', ' ', 'unfashionable end of the western spiral arm of the Galaxy'] 
+0

您的正则表达式解析器中是否有最大数量的组? (为什么你首先使用分组圆括号?以备将来使用?) – usr2564301

+3

're.M'是8,并且您将它作为'maxsplit'位置参数传递。你想'flags = re.M'来代替。 –

+2

@TimPeters将其发布为答案 – Barmar

回答

4

re.M是8,和你传递,作为maxsplit位置参数。您需要改为flags=re.M

+1

修复它,谢谢! –

相关问题