isnumeric() не распознает мои строки как числовые

У меня есть некоторые данные, которые я скопировал и вставил из Википедии, и я занимаюсь их очисткой. Я хочу преобразовать все строки, которые являются числовыми, в числа с плавающей запятой. По какой-то причине числовые строки не распознаются функцией str.isnumeric(), за исключением первой «100.0».

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, все безрезультатно ... любая помощь очень ценится!


person Michael Kiffer    schedule 28.12.2016    source источник


Ответы (1)


Я не считаю, что элемент 100.0 изначально был '100.0', так как '100.0' также не был бы распознан str.isnumeric(). Это связано с тем, что символ . (точка) не имеет свойства Unicode numeric. Я скорее предполагаю, что 100.0 изначально было '100', а isnumeric.

Ваша проблема может быть решена e. г. Сюда:

for n, i in enumerate(PercentageWorldEmissions):
    try:
        PercentageWorldEmissions[n] = float(i)
    except ValueError:
        continue
person Armali    schedule 04.01.2017