我有以下字符串:
st='19.000\n20,000'
我想删除逗号和分数仅限数字。我使用以下代码
re.sub(r'[^\d\.]','',st)
结果是:
' 19.00020000'
我是正则表达式的新手。如何保留新行并删除点任何人都可以帮忙吗?
答案 0 :(得分:4)
^\d
匹配所有不是数字的内容。
相反,您应该使用(?<=\d)[,\.]
。
(?<=\d)
确保逗号或点之前有数字。
import re
st = '19.000\n20,000\na.a,a'
print(re.sub(r'(?<=\d)[,\.]','',st))
>> 19000
20000
a.a,a
答案 1 :(得分:1)
[^\d\.]
,因为它以^
开头,匹配不是&#39; 数字(\d
)或点({{1}的所有内容}})。如果您要删除逗号和积分,则需要匹配\.
或,
,可以写为\.
或[,\.]
。在[\.,]
中,写了re.sub
。你用空字符串(r'[,\.]
)替换它们,其他一切都应保持原样。
修改根据您问题的更改,删除数字之间的逗号和分数,一种方法是使用
''
将匹配前面有数字(re.sub(r'(?<=\d)[,\.](?=\d)','',st)
)的逗号或点,后跟数字((?<=\d)
)。这些被称为documentation。