我有一些数据是我从维基百科复制和粘贴的,我正在清理它。我想将所有数字字符串转换为浮点数。出于某种原因,除了第一个'100.0'之外,str.isnumeric()不会识别数字字符串
for n,i in enumerate(PercentageWorldEmissions):
if str.isnumeric(i):
PercentageWorldEmissions[n] = float(i)
else:
continue
输出:
['% CO2 emissions by country', 100.0, '29.55', '14.95', '9.57', '6.56', '4.95', '3.58', '2.15', '1.74', '1.73', '1.71', '1.58', '1.40', '1.38', '1.38', '1.28', '1.27', '1.16', '1.15', '1.10', '0.99', '0.94', '0.91', '0.84', '0.78', '0.76', '0.70', '0.68', '0.66', '0.64', '0.63', '0.56', '0.56', '0.55', '0.53', '0.44', '0.44', '0.40', '0.39', '0.34', '0.31', '0.28', '0.27', '0.27', '0.26', '0.25', '0.22', '0.22', '0.21']
其中PercentageWorldEmissions看起来与输出相同,但元素100.0最初是'100.0'
为什么isnumeric不能识别其他字符串?有隐藏的角色,我看不到?我尝试了在另一个页面上看到的repr()方法,但没有透露任何内容。
我也试过isdigit,isalnum,isdecimal都无济于事......非常感谢任何帮助!
答案 0 :(得分:0)
我不认为元素100.0原来是'100.0',因为'100.0'
也不会被str.isnumeric()
识别。这是因为字符.
(句号)没有Unicode numeric 属性。我宁愿假设100.0
原来是'100'
,isnumeric
。
你的问题可以解决了。 G。这样:
for n, i in enumerate(PercentageWorldEmissions):
try:
PercentageWorldEmissions[n] = float(i)
except ValueError:
continue