美元数量的Python正则表达式,包括逗号和小数

时间:2013-08-15 16:14:12

标签: python regex

我是python的新手,我正在编写一些代码,需要删除一些文本并删除任何不是一美元金额的代码。例如,数字2000可以表示为2000 2000.00 2,000和2k。我试图用一个正则表达式替换来完成这个。

现在我有:

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

虽然我知道这完全是错误的并且没有编译,但我不够精通,不知道如何处理它。谁能给我一些指导?谢谢!

2 个答案:

答案 0 :(得分: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,从而有效地删除任何不是美元金额的内容。

答案 1 :(得分:2)

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

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

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

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