2

我遇到了以下 python 脚本的问题,该脚本从公司内部 Web 应用程序文本区域中的文本中提取一些选项。

import re

text = 'option one\noption two, option three, option four'
correct = 'option one, option two, option three, option four'

pattern = re.compile('(\s*[,]\s*)')
fixed = pattern.sub(', ', text)

print fixed
option one
option two, option three, option four

print fixed.split(', ')
['option one\noption two', 'option three', 'option four']

这显然无法将“选项一\n选项二”拆分为“选项一”、“选项二”

所以输入可能最终为

option one
option two, option three, option four

这将需要转换为

option one, option two, option three, option four

如果是逗号,它可以正常工作

或者

逗号后跟换行符

但如果它本身只是一个换行符,则不是。

4

3 回答 3

4

将您的角色类从 扩展[,][,\n],也许?另外,为什么不直接在正则表达式上拆分,而不是先搜索替换再拆分?这个功能:http ://docs.python.org/library/re.html?highlight=re.split#re.split可以派上用场。

于 2012-05-04T10:24:31.513 回答
3

你能试试吗

(\s*(,|\n)\s*)

?

或者可能更好

(\s*[,\n]\s*)

...我总是忘记您可以\n参加角色课程...

于 2012-05-04T10:22:28.017 回答
2

我没有正则表达式就到了那里:

print [x.strip() for x in text.replace('\n', ', ').split(', ')]

结果:

['option one', 'option two', 'option three', 'option four']

我并不是说这对您的用例来说是一个很好的答案。如果您需要添加额外的分隔符,则意味着.replace()为每个分隔符添加一个额外的分隔符。

于 2012-05-04T13:00:08.757 回答