gpt4 book ai didi

python - Python 中灵活的数字字符串解析

转载 作者:太空狗 更新时间:2023-10-29 21:44:46 26 4
gpt4 key购买 nike

是否有任何 Python 库可以帮助解析和验证超出内置 float() 函数支持的数字字符串?例如,除了简单的数字 (1234.56) 和科学记数法 (3.2e15) 之外,我希望能够解析如下格式:

  • 带逗号的数字:2,147,483,647
  • 命名大数:55 亿
  • 分数:1/4

我做了一些搜索,但找不到任何东西,但如果这样的库还不存在,我会感到很惊讶。

最佳答案

如果您想转换“本地化”数字,例如美国的“2,147,483,647”形式,您可以使用 locale 模块中的 atof() 函数。示例:

import locale
locale.setlocale(locale.LC_NUMERIC, 'en_US')
print locale.atof('1,234,456.23') # Prints 1234456.23

至于分数,Python 现在可以直接处理它们(从 2.6 版开始);它们甚至可以从字符串构建:

from fractions import Fraction
x = Fraction('1/4')
print float(x) # 0.25

因此,仅在上述两个标准模块的帮助下,您可以解析以您提到的前 3 种方式中的任何一种编写的数字:

try:
num = float(num_str)
except ValueError:
try:
num = locale.atof(num_str)
except ValueError:
try:
num = float(Fraction(num_str))
except ValueError:
raise Exception("Cannot parse '%s'" % num_str) # Or handle '42 billion' here
# 'num' has the numerical value of 'num_str', here.

关于python - Python 中灵活的数字字符串解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1858117/

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