python:搜索一个5位数字而不是特定数字

时间:2015-12-03 13:02:17

标签: python regex numbers digit

可以比较字符串,而不是尝试搜索150,00200,00250,00 300,001.000,001.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']):

2 个答案:

答案 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}'

该模式匹配

  1. 数字在第一个数字后面的逗号处开头,但可选 因为?符号。即:x,......
  2. 然后有3个数字和一个小数符号(。)
  3. 最后但并非最不重要的,正是2个数字。
  4. 因此,此模式首先与x,xxx.xx或xxx.xx表达式匹配。

    然后,如果您想要与欧元符号(€)匹配,您必须手动将add Sc中的字符添加到您的模式中。

答案 1 :(得分:1)

您可以使用regex

import re
...

if re.search(r'\d+\.?\d+,?\d+', item['Value']):