【发布时间】:2021-04-21 04:42:07
【问题描述】:
我有各种字符串实例,例如:
- hello world,i am 2000to -> hello world, i am 2000 to
- the state was 56,869,12th -> the state was 66,869, 12th
- covering.2% -> covering. 2%
- fiji,295,000 -> fiji, 295,000
为了处理第一种情况,我想出了两步正则表达式:
re.sub(r"(?<=[,])(?=[^\s])(?=[^0-9])", r" ", text) # hello world, i am 20,000to
re.sub(r"(?<=[0-9])(?=[.^[a-z])", r" ", text) # hello world, i am 20,000 to
但这会以一些不同的方式破坏文本,并且其他情况也没有涵盖。任何人都可以建议一个更通用的正则表达式来正确解决所有情况。我试过使用replace,但它做了一些意想不到的替换,这反过来又引发了一些其他问题。我不是正则表达式方面的专家,希望得到指点。
【问题讨论】:
-
示例
covering.2%对我来说似乎模棱两可,因为十进制值可能是.2% -
每个十进制值都以某个数字开头,后跟
.。所以 0.2 而不是 .2。
标签: python python-3.x regex