可以比较字符串,而不是尝试搜索150,00
,200,00
,250,00
300,00
或1.000,00
,1.100,00
例如xxx,xx €
和x.xxx,xx €
,无论数字是多少?
我从eLRuL获得的代码工作正常,但它也给我格式xx,xx。我只想要xxx,xx和x.xxx,xx,我想在最后包含欧元符号,所以它应该包括这个xxx,xx€和x.xxx,xx€。
if re.search(r'\d+\.?\d+,?\d+', item['Value']):
答案 0 :(得分:1)
是的,有一种方法可以标记它:“正则表达式”(正则表达式)。在Python中,您可以使用re模块或regex模块。
首先,您需要创建模式,在您的情况下:
import re
number = str(<what_you_want_to_search>) #for example 1,000.00 or 100.00
pat = r'(\d,)?\d{3}\.\d{2}' #pattern for xxx.xx and x,xxx.xx numbers
result = re.search(pat, number)
if result:
print result.string
如果没有表达式匹配,则re.search返回None,如果有,则返回对象。然后你可以打印出与模式匹配的字符串。
我强烈建议您阅读该软件包的文档,以确切了解如何创建自己的正则表达式。
编辑:
正如你所说,模式r'\ d +。?\ d +,?\ d +'正在运行,但也与xx,xx匹配。你必须更具体:
pat = r'(\ d,)?\ d {3}。\ d {2}'
该模式匹配
因此,此模式首先与x,xxx.xx或xxx.xx表达式匹配。
然后,如果您想要与欧元符号(€)匹配,您必须手动将add Sc中的字符添加到您的模式中。
答案 1 :(得分:1)
您可以使用regex
:
import re
...
if re.search(r'\d+\.?\d+,?\d+', item['Value']):