Pau*_*aul 10 python unicode floating-point
我正在解析一个具有分数的Unicode表示的网页.我希望能够直接获取这些字符串并将它们转换为浮点数.例如:
"⅕"将变为0.2
有关如何在Python中执行此操作的任何建议?
Kar*_*and 26
您想使用unicodedata模块:
import unicodedata
unicodedata.numeric(u'?')
Run Code Online (Sandbox Code Playgroud)
这将打印:
0.20000000000000001
Run Code Online (Sandbox Code Playgroud)
如果字符没有数值,则unicodedata.numeric(unichr[, default])返回默认值,或者如果未给出default,则会引发ValueError.
浮点数的 Unicode 表示称为Vulgar Fractions
您可以使用unicodedata.numeric(char) 将它们转换为浮点数
但是,numeric(char)不适用于类似3¾. 这需要更多的努力:
from unicodedata import numeric
samples = ["3¼","19¼","3 ¼","10"]
for i in samples:
if len(i) == 1:
v = numeric(i)
elif i[-1].isdigit():
# normal number, ending in [0-9]
v = float(i)
else:
# Assume the last character is a vulgar fraction
v = float(i[:-1]) + numeric(i[-1])
print(i, v)
Run Code Online (Sandbox Code Playgroud)
输出:
3¼ 3.25
19¼ 19.25
3 ¼ 3.25
10 10.0
Run Code Online (Sandbox Code Playgroud)
您可能还对使用正则表达式从更广泛的用户输入中分离出这些粗俗部分感兴趣。您可以使用其 unicode 字符代码的范围来做到这一点:
/[\u2150-\u215E\u00BC-\u00BE]/g
Run Code Online (Sandbox Code Playgroud)
示例:https : //regexr.com/3p8nd