python:搜索5位数字而不是特定的numb

2024-10-06 07:11:24 发布

您现在位置:Python中文网/ 问答频道 /正文

与其尝试搜索150,00200,00250,00300,00或{},1.100,00是否可以与例如xxx,xx €和{}进行比较而不考虑数字?在

我从eLRuL得到的代码运行得很好,但它也给出了xx,xx格式。我只想要xxx,xx和x.xxx,xx,而且我还想在末尾加上欧元符号,所以它应该包括xxx,xx欧元和x.xxx,xx€。在

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


Tags: researchifvalue格式符号数字item
2条回答

您可以使用regex

import re
...

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

是的,有一种方法,你已经标记了它:“regex”(正则表达式)。在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

在搜索如果表达式不匹配,则返回None;如果存在匹配,则返回对象。然后可以打印出与模式匹配的字符串。在

我强烈建议您阅读该包的文档,以确切了解如何创建自己的regex。在

编辑:

就像你说的,r'\d+模式。?\d+,?\d+'正在工作,但与xx、xx也匹配。你必须更加具体:

pat=r'(\d,)?\d{3}.\d{2}'

这个模式匹配

  1. 第一个数字后以逗号开头的数字,但可以选择 因为?符号。i、 e:x,。。。在
  2. 那么只有3个数字和一个十进制符号(.)
  3. 最后但并非最不重要,正好是2个数字。在

所以这个图案和x吻合,xxx.xx号或者xxx.xx号你一开始想表达什么。在

如果你想与欧元符号(€)匹配,你就必须add手动将Sc中的字符转换为你的模式。在

相关问题 更多 >