我在 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”时它不起作用(在第二种情况下)。
当然,我们将不胜感激任何帮助。出现了一个非常愚蠢的错误,并因此拖延了主要工作。
$
是一个特殊字符
。所以如果你想替换它,请使用
re.sub(r"\$20", "#20", text)
^^
你将不得不转义
它。同时使用r
模式来避免转义
问题。
$
表示字符串结尾。因此您的正则表达式无效。
我是一名优秀的程序员,十分优秀!