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

1 ответ

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

Ваша проблема может быть решена, например, так:

for n, i in enumerate(PercentageWorldEmissions):
    try:
        PercentageWorldEmissions[n] = float(i)
    except ValueError:
        continue
Другие вопросы по тегам