gpt4 book ai didi

python - 如何从 Python 中的字符串中提取数字并返回列表?

转载 作者:行者123 更新时间:2023-12-04 01:14:44 26 4
gpt4 key购买 nike

我正在尝试查找文本中的所有数字并将它们返回到一个 float 列表中。

正文中:

  • 逗号用于分隔千位
  • 几个连续的数字用逗号和空格隔开
  • 数字可以附加到单词上
text = "30feet is about 10metre but that's 1 rough estimate several numbers are like 2, 137, and 40 or something big numbers are like 2,137,040 or something"

我需要将输出作为 float 列表返回,中间有逗号但没有语音标记。

Eg. 
extract_numbers("1, 2, 3, un pasito pa'lante Maria")
is [1.0, 2.0, 3.0]

不幸的是,我当前尝试的输出返回一个字符串:


def extract_numbers(text):
nums = re.findall(r'\b\d{1,3}(?:,\d{3})*(?:\.\d+)?(?!\d)', text)

return (("[{0}]".format(
', '.join(map(str, nums)))))

extract_numbers(TEXT_SAMPLE)

如何返回列表中的数字?

最佳答案

您可以从匹配项中删除所有逗号,然后将结果映射到 float

你可以使用

def extract_numbers(text):
return [float(x.replace(',','')) for x in re.findall(r'\b\d{1,3}(?:,\d{3})*(?:\.\d+)?(?!\d)', text)]

参见 Python demo :

import re

TEXT_SAMPLE = "30feet is about 10metre but that's 1 rough estimate several numbers are like 2, 137, and 40 or something big numbers are like 2,137,040 or something"

def extract_numbers(text):
return [float(x.replace(',','')) for x in re.findall(r'\b\d{1,3}(?:,\d{3})*(?:\.\d+)?(?!\d)', text)]

print(extract_numbers(TEXT_SAMPLE))

# => [30.0, 10.0, 1.0, 2.0, 137.0, 40.0, 2137040.0]

关于python - 如何从 Python 中的字符串中提取数字并返回列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63738344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com