用逗号Python将小数点替换为浮点数

时间:2019-09-22 09:09:27

标签: regex python-3.x nlp

对于给定的字符串,如何用逗号替换浮点数中的小数点?

例如:12.33应该变成12,33

请注意,我不能简单地将所有.替换为,,因为文本还包含用于分隔两个句子的句点。

我需要这样做是为了清除文本。

4 个答案:

答案 0 :(得分:1)

一种选择是使用2个捕获组并断言左侧和右侧的内容不是非空白字符。

(?<!\S)(\d+)\.(\d+)(?!\S)

部分

  • (?<!\S)后面是负数,直接在左边不是非空格字符
  • (\d+)捕获第1组,匹配1个以上的数字
  • \.从字面上匹配点
  • (\d+)捕获第2组,匹配1个以上的数字
  • (?!\S)后面是负数,直接在右边的不是非空格字符

Regex demo

在替换使用组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)')