我用Python编写了一个“货币标记器”,它可以识别所有的货币表达式并将其替换为已标记的字符串。
例如,
将 "I have $20 in my pocket"
替换为 "I have <Currency>$20</Currency> in my pocket"
其中一个任务要求我使用标记字符串替换被识别为货币的字符串。我正在使用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.escape('$20')
,在某些情况下可以使正则表达式更易于阅读... - mgilson