Kev*_*sen 7 python validation parsing numbers
是否有任何Python库可以帮助解析和验证数字字符串超出内置float()函数支持的范围?例如,除了简单数字(1234.56)和科学记数法(3.2e15)之外,我希望能够解析如下格式:
我做了一些搜索,找不到任何东西,但如果这样的库还没有存在,我会感到惊讶.
如果要转换"本地化"数字,例如美国"2,147,483,647"表单,则可以使用语言环境模块中的atof()函数.例:
import locale
locale.setlocale(locale.LC_NUMERIC, 'en_US')
print locale.atof('1,234,456.23') # Prints 1234456.23
Run Code Online (Sandbox Code Playgroud)
对于分数,Python现在直接处理它们(从2.6版开始); 它们甚至可以用字符串构建:
from fractions import Fraction
x = Fraction('1/4')
print float(x) # 0.25
Run Code Online (Sandbox Code Playgroud)
因此,只有在上述两个标准模块的帮助下,您才能解析以前面提到的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.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1763 次 |
| 最近记录: |