Python中的re.sub()在替换字符串中的货币值时并不总是有效

时间:2015-09-11 05:06:42

标签: python regex python-2.7 text-mining

我在Python中构建了一个“货币标记器”,用于标识所有货币表达式并用标记的字符串替换它们。

实施例,
替换"I have $20 in my pocket"
"I have <Currency>$20</Currency> in my pocket"

其中一项任务要求我用标记字符串替换标识为Currency的字符串。我正在使用re.sub()来执行此操作。

除了“$ 4.4B”或“$ 4.4M”之外,它适用于每种形式的字符串。

我尝试在我的python控制台中运行简单示例,发现re.sub()与具有混合美元模式的模式不一致。

例如,

>>> text = "I have #20 in my pocket"
>>> re.sub("#20", "$20", text)
'I have $20 in my pocket'
>>> text = "I have $20 in my pocket"
>>> re.sub("$20", "#20", text)
'I have $20 in my pocket'

在上面的示例中,您会看到当我尝试将“$ 20”替换为“#20”时,它不起作用(在第二种情况下)。

当然,任何帮助都会非常感激。由于这个原因,一个非常愚蠢的虫子出现了,并且正在拖延主要工作。

1 个答案:

答案 0 :(得分:0)

除非您使用正则表达式(并且您似乎没有),否则没有理由使用“re”模块。

只需使用字符串的.replace()方法:

text.replace("#20", "$20")