0

我是 python 新手,我正在编写一些代码,需要获取一段文本并删除任何不是美元金额的内容。例如,数字 2000 可以表示为 2000 2000.00 2,000 和 2k。我正在尝试通过单个正则表达式替换来完成此操作。

现在我有:

f=re.sub([0-9]+?(,[0-9])*?[0-9]+?(.[0-9])*?[TtBbMmKk],"",f)

虽然我知道这是完全不正确的并且无法编译,但我不够熟练,不知道该怎么做。谁能给我一些指导?谢谢!

4

2 回答 2

3

试一试:

import re
blockOfText = 'two thousand may be represented as 2000 2000.00 2,000 and 2k'
' '.join([ ''.join(x[0]) for x in re.findall(r'(\$?\d+([,\.]\d+)?k?)', blockOfText) ])

这将为您提供一个新的文本字符串,您可以根据blockOfText需要分配给它,从而有效地删除任何不是美元金额的东西。

于 2013-08-15T16:29:36.013 回答
2

正则表达式需要放入 Python 字符串中:

f=re.sub(r"[0-9]+?(,[0-9])*?[0-9]+?(.[0-9])*?[TtBbMmKk]","",f)

字符串上的r前缀使其成为原始字符串文字。r'\w'这将导致字符串中的所有反斜杠都按字面意思解释,这意味着当您想在正则表达式中使用反斜杠时(例如匹配单词字符而不是) ,您不需要转义反斜杠'\\w'

所以现在你至少应该能够运行这段代码并测试正则表达式,我不确定行为是否正是你想要的。

于 2013-08-15T16:21:53.340 回答