【问题标题】:Extracting Prices with Regex使用正则表达式提取价格
【发布时间】:2017-09-15 11:05:40
【问题描述】:

我希望从一串抓取的数据中提取价格。

我现在正在使用这个:

re.findall(r'£(?:\d+\.)?\d+.\d+', '£1.01')
['1.01']

这在 99% 的情况下都能正常工作。但是,我偶尔会看到:

re.findall(r'£(?:\d+\.)?\d+.\d+', '£1,444.01')
['1,444']

理想情况下,我希望看到['1444.01']

这是我从中提取价格的字符串示例。

'\n                £1,000.73                \n\n\n                + £1.26\nUK delivery\n\n\n'

我正在寻求一些帮助,将正则表达式放在一起以从上面的字符串中获取 ['1000.73', '1.26']

【问题讨论】:

    标签: regex python-3.x


    【解决方案1】:

    您可以使用'£(\d[\d.,]*)\b' 获取所有值,然后使用删除所有逗号

    import re
    s = '\n                £1,000.73                \n\n\n                + £1.26\nUK delivery\n\n\n'
    r = re.compile(r'£(\d[\d.,]*)\b')
    print([x.replace(',', '') for x in re.findall(r, s)])
    # => ['1000.73', '1.26']
    

    Python demo

    £(\d[\d.,]*)\b 模式找到£,然后捕获一个数字,然后捕获任何 0+ 个数字/,/.,尽可能多,但会回溯到单词边界所在的位置。

    【讨论】:

    • 很好的解决方案 - 我会试一试。谢谢维克托
    猜你喜欢
    • 2016-03-23
    • 2018-06-21
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多