#python #text
Вопрос:
У меня есть файл .txt, и я хотел бы отобразить данные.
Вот мой код
import matplotlib.pyplot as plt
with open('/home/tont_fe/Desktop/Extra_for_paper/Lifbase OH emission2.txt') as f:
lines = f.readlines()
x = [(line.split()[0]) for line in lines]
item = [float(item) for item in x]
y = [(line.split()[1]) for line in lines]
Я получаю следующую ошибку:
Ошибка значения: недопустимый литерал для float(): 281,2
пример данных: 281,228 0,01097
281,2289 0,0096
281,2297 0,00888
281,2306 0,00883
281,2315 0,00932
281,2324 0,01008
281,2333 0,01062
281,2341 0,01058
281,235 0,01013
281,2359 0,00981
281,2367 0,01013
281,2376 0,01141
281,2385 0,01377
Комментарии:
1. Замените запятые точками!
Ответ №1:
ValueError: invalid literal for float(): 281,2
Поплавок является исключением .
, но получил ,
, что вызвало ValueError
. Вы можете либо заменить ,
using .
перед float
подачей в встроенный модуль, либо использовать его следующим образом:
import locale
locale.setlocale(locale.LC_NUMERIC, 'de_DE') # I use Deutschland but can be any country using , in floats
value_str = "281,2"
value_float = locale.atof(value_str)
print(value_float)
выход
281.2
Ответ №2:
Вы пытаетесь преобразовать string
содержащее ,
в float
. Вот почему произошла ошибка!
Удалите ,
, а затем преобразуйте в float
.
with open('/home/tont_fe/Desktop/Extra_for_paper/Lifbase OH emission2.txt') as f:
lines = f.readlines()
x = [(line.split()[0]) for line in lines]
# This line will remove ',' from each string of x
x = [i.replace(',', '') for i in x]
item = [float(item) for item in x]
y = [(line.split()[1]) for line in lines]
Комментарии:
1. @Federica Tonti, пожалуйста, поддержите и примите мой ответ. Спасибо.
2. к сожалению, я все еще не могу оценить ответ, у меня недостаточно репутации, но ответ принят, я думаю 🙂 большое спасибо!!