替换符号字符串+有理数python

replace string of symbol+ rational number python

我有一个很大的语料库,其中包含

text = [".4 million but not section 4.1"]

我想清理为

text = [",4 million but not section 4.1"]

使用简单的一行,例如

text.replace("$\d.\d","$\d,\d")re.sub。 但我不知道如何将字符串 "$"+digit+"." 映射到 "$"+digit+","

有什么想法吗? 谢谢

def rep(m):
    return m.group(1) + "," + m.group(2)
re.sub("([$][0-9]+).([0-9]+)",rep,text)

如果您有几行要匹配,我建议您编译您的模式。假设它们都遵循接近于此的模式,您可以执行以下操作:

import re

p = re.compile(r"($\d+)\.(\d+)")

lines_before = [
    ".4 million but not section 4.1",
    ".6 foo 43.54",
]

lines_after = [p.sub(r",", l) for l in lines_before]

print(lines_after)

输出:

[',4 million but not section 4.1', ',6 foo 43.54']

说明

首先,编译一个正则表达式,匹配任意位置的文字“$”,后跟一位或多位数字,后跟文字“.”,再后跟一位或多位数字。这会捕获“.”前后的部分。

然后,对于每一行,将匹配项替换为捕获组 1,后跟“,”,最后添加第二个捕获组。