我遇到了以下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选项2'拆分为'选项一','选项二'
因此输入可能最终为
option one
option two, option three, option four
需要转换为
option one, option two, option three, option four
如果是逗号
,它可以正常工作或
逗号后跟换行符
但是如果它本身就只是一个新行。
答案 0 :(得分:4)
将您的角色类从[,]
扩展到[,\n]
,也许?另外,为什么不直接拆分正则表达式,而不是先搜索和替换然后拆分?这个功能:http://docs.python.org/library/re.html?highlight=re.split#re.split可以派上用场。
答案 1 :(得分:3)
你能试试吗
(\s*(,|\n)\s*)
或者甚至可能更好
(\s*[,\n]\s*)
...我总是忘记你可以将\n
放入角色等级......
答案 2 :(得分:2)
我没有正则表达式就到了那里:
print [x.strip() for x in text.replace('\n', ', ').split(', ')]
结果:
['option one', 'option two', 'option three', 'option four']
我并不认为这对您的使用案例是一个很好的答案。如果您需要添加额外的分隔符,则意味着为每个分隔符添加额外的.replace()
。