[英]python: split string after comma and dots
我有一段代码,它在逗号和点后分割字符串(但当数字在逗号或点前或后则不会):
text = "This is, a sample text. Some more text. $1,200 test."
print re.split('(?<!\d)[,.]|[,.](?!\d)', text)
结果是:
['This is', ' a sample text', ' Some more text', ' $1,200 test', '']
我不想丢失逗号和圆点。 所以我要找的是:
['This is,', 'a sample text.', 'Some more text.', '$1,200 test.']
此外,如果text
末尾有一个点,它会在列表末尾生成一个空字符串。 此外,在分割弦的开头有白色空格。 有没有不使用re
的更好的方法? 你会怎么做?
不幸的是,你不能在零长度匹配上使用re.split()
,所以除非你能保证在逗号或点之后会有空格,否则你需要使用不同的方法。
这是一个使用re.findall()
选项:
>>> text = "This is, a sample text. Some more text. $1,200 test."
>>> print re.findall(r'(?:\d[,.]|[^,.])*(?:[,.]|$)', text)
['This is,', ' a sample text.', ' Some more text.', ' $1,200 test.', '']
这不会剥离空格,如果字符串以逗号或点结尾,您将在结尾处得到一个空匹配,但这些很容易修复。
如果一个安全的假设是每个逗号和点之后都会有空格,那么我们就可以将该字符串拆分到该空格上,这样可以使它更简单:
>>> print re.split(r'(?<=[,.])(?<!\d.)\s', text)
['This is,', 'a sample text.', 'Some more text.', '$1,200 test.']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.