对于给定的字符串,如何用逗号替换浮点数中的小数点?
例如:12.33
应该变成12,33
请注意,我不能简单地将所有.
替换为,
,因为文本还包含用于分隔两个句子的句点。
我需要这样做是为了清除文本。
答案 0 :(得分:1)
一种选择是使用2个捕获组并断言左侧和右侧的内容不是非空白字符。
(?<!\S)(\d+)\.(\d+)(?!\S)
部分
(?<!\S)
后面是负数,直接在左边不是非空格字符(\d+)
捕获第1组,匹配1个以上的数字\.
从字面上匹配点(\d+)
捕获第2组,匹配1个以上的数字(?!\S)
后面是负数,直接在右边的不是非空格字符在替换使用组1和组2中,并将逗号放在组之间
\1,\2
例如
import re
text = "Test 12.33 test"
new_text = re.sub(r'(?<!\S)(\d+)\.(\d+)(?!\S)', r'\1,\2', text)
print(new_text)
输出
Test 12,33 test
答案 1 :(得分:0)
我认为您可以使用finditer
查找文本中所有匹配项的位置。
然后一一替换。
import re
text = '''This is a dummy text. I want the `.` of 12.12 to go away.
I want to replace it with a `,`. Lets see if it works.'''
p = re.compile(r"\d\.\d")
for m in p.finditer(text):
text = text[:m.start() + 1] + ',' + text[m.start() + 2:]
print(text)
输出为
This is a duppy text. I want the `.` of 12,12 to go away.
I want to replace it with a `,`. Lets see if it works.
答案 2 :(得分:0)
应用此简单的正则表达式替换表达式
re.sub(r'(\d+)\.(\d*)', r'\g<1>,\g<2>',search_string)
答案 3 :(得分:0)
我能够使用以下正则表达式解决此问题:
decmark_reg = re.compile('(?<=\d)\.(?=\d)')