【问题标题】:Extract space separated numbers from string从字符串中提取空格分隔的数字
【发布时间】:2021-12-10 21:25:41
【问题描述】:

所以我想从 python 中的字符串中提取总费率的数量。 假设我有这样的字符串:

str = "National Museum 4.6(1 686), Museum, Green Street 24/26, Some description, Closing: md.. 20:00"

我想提取 4.6 的速率和 1686 的总速率。我通过以下命令设法提取了 4.6:

rate = re.findall("\d{1}[.]\d{1,2}", str)
print(rate)
Out: ['4.6']

但我对总费率有疑问,因为有时该值可能是三位数字,例如没有任何空格的 386,有时它可能是 12 893,我们必须考虑它们之间的空格。

【问题讨论】:

  • 试试\d+[. ]\d+
  • re.findall(r"\((\d{1,3}(?:\s\d{3})*)\)", text)?提取括号内的数字。
  • @WiktorStribiżew 就像一个魅力。谢谢你。我如何在此评论部分给您“最佳答案”?
  • 我添加了一个答案。
  • 注意{1}是多余的,即\d{1}等价于\d

标签: python regex string


【解决方案1】:

首先,注意str是Python内置的,你应该避免用内置名称命名变量。

您可以使用

提取括号内特定格式的数字
re.findall(r"\((\d{1,3}(?:\s\d{3})*)\)", text)

或者,使用re.search 获得第一场比赛:

m = re.search(r"\((\d{1,3}(?:\s\d{3})*)\)", text)
if m:
    print(m.group(1))

请参阅regex demo详情

  • \( - 一个 ( 字符
  • (\d{1,3}(?:\s\d{3})*) - 第 1 组:
    • \d{1,3} - 一位、两位或三位数字
    • (?:\s\d{3})* - 零次或多次出现空格和三位数字
  • \) - ) 字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-25
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    相关资源
    最近更新 更多