Python 中的 re.sub() 在替换字符串中的货币值时并不总是有效
re.sub() in Python does not always work while replacing currency values in string
我在 Python 中构建了一个 "Currency Tagger",它识别所有货币表达式并用标记字符串替换它们。
示例,
替换 "I have in my pocket"
"I have <Currency></Currency> in my pocket"
其中一项任务要求我用标记的字符串替换标识为 Currency 的字符串。我正在使用 re.sub()
来执行此操作。
它适用于除“$4.4B”或“$4.4M”形式之外的所有形式的字符串。
我在 python 控制台中尝试了 运行 简单示例,发现 re.sub()
与具有混合美元模式的模式不一致。
例如,
>>> text = "I have #20 in my pocket"
>>> re.sub("#20", "", text)
'I have in my pocket'
>>> text = "I have in my pocket"
>>> re.sub("", "#20", text)
'I have in my pocket'
在上面的示例中,您看到当我尝试用“#20”替换“$20”时它不起作用(在第二种情况下)。
当然,我们将不胜感激任何帮助。出现了一个非常愚蠢的错误,并因此拖延了主要工作。
$
是一个 special character
。所以如果你想替换它,请使用
re.sub(r"$20", "#20", text)
^^
您将不得不 escape
it.Also 使用 r
模式来避免 escaping
问题。
$
表示结束 string.So 你的正则表达式无效。
除非您正在使用正则表达式(而且您似乎没有),否则没有理由使用 "re" 模块。
只需使用字符串的.replace()方法即可:
text.replace("#20", "")
我在 Python 中构建了一个 "Currency Tagger",它识别所有货币表达式并用标记字符串替换它们。
示例,
替换 "I have in my pocket"
"I have <Currency></Currency> in my pocket"
其中一项任务要求我用标记的字符串替换标识为 Currency 的字符串。我正在使用 re.sub()
来执行此操作。
它适用于除“$4.4B”或“$4.4M”形式之外的所有形式的字符串。
我在 python 控制台中尝试了 运行 简单示例,发现 re.sub()
与具有混合美元模式的模式不一致。
例如,
>>> text = "I have #20 in my pocket"
>>> re.sub("#20", "", text)
'I have in my pocket'
>>> text = "I have in my pocket"
>>> re.sub("", "#20", text)
'I have in my pocket'
在上面的示例中,您看到当我尝试用“#20”替换“$20”时它不起作用(在第二种情况下)。
当然,我们将不胜感激任何帮助。出现了一个非常愚蠢的错误,并因此拖延了主要工作。
$
是一个 special character
。所以如果你想替换它,请使用
re.sub(r"$20", "#20", text)
^^
您将不得不 escape
it.Also 使用 r
模式来避免 escaping
问题。
$
表示结束 string.So 你的正则表达式无效。
除非您正在使用正则表达式(而且您似乎没有),否则没有理由使用 "re" 模块。
只需使用字符串的.replace()方法即可:
text.replace("#20", "")