Я пишу короткий скрипт pygame и мне нужно проанализировать значения из файла .cfg, но я не очень разбираюсь в python и получаю ValueError и понятия не имею, почему он не может проанализировать строку.
Я попытался написать метод, чтобы взять строку и преобразовать ее в целое число, если не удалось преобразовать ее в число с плавающей точкой, но это не сработало.
Вот код:
def _file_read(self):
with open(os.path.join(sys.path[0], "planets.cfg")) as config:
lines = [line.replace(';', '').replace('{', '').replace('}', '').split() for line in config]
for j in range(len(lines)):
self.name.append(lines[j][0])
self.radius.append(float(lines[j][1]))
self.distance.append(float(lines[j][2]))
self.speed.append(float(lines[j][3]))
self.color.append(lines[j][4])
Вот что находится внутри файла planets.cfg, не обращайте внимания на значения, они созданы для целей тестирования.
Earth {123; 321; 0.005; (0,255,0)}
Mars {432; 234; 0.004; (255,0,0)}
Мне нужно иметь число с плавающей точкой, которое я могу передать математической формуле, но ValueError нравится место с плавающей точкой немного больше.
Есть идеи, как с этим справиться? Я буду очень благодарен за любую помощь или объяснение, почему эта ошибка происходит:)
О, и вот ошибка, которую он выводит:
File "C:/Users/Jakub/PycharmProjects/untitled/kruznice.py", line 35 in _file_read
self.radius.append(float(lines[j][1])) ValueError: could not convert string to float: 'radius'
РЕДАКТИРОВАТЬ Добавлено сообщение об ошибке, да, я действительно разбойник.
РЕДАКТИРОВАТЬ # 2 (Решение): Итак, через некоторое время я нашел решение, и оно в основном НИЧЕГО не связано с неправильным кодом. У меня были строковые значения в строке 2 в файле planets.cfg
, и я почему-то забыл сохранить его, и постоянно думал, что использую более новую версию только с целыми числами и числами с плавающей запятой. Да. Бывают глупые ошибки. И я делаю их много.