繁体   English   中英

python:用逗号和点后分割字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM