#python #python-3.x
#python #python-3.x
Вопрос:
Пока это мой код:
readFile = open("ascii_vals.txt", 'r')
writeFile = open("ascii_art.txt", 'w')
EOF = False
while not EOF:
line = readFile.readline()
if line == "":
EOF = True
else:
for char in list(line):
art = chr(int(line))
writeFile.write(art)
Целью этой программы является преобразование файла чисел в формат ASCII. Моя первая проблема заключается в том, что я получаю эту ошибку:
Traceback (most recent call last):
File "C:/Users/Ethan/Desktop/EthanWork/Python/Python Projects/Uni
Work/asciiNumToChar/Main.py", line 14, in <module>
art = chr(int(line))
ValueError: invalid literal for int() with base 10: '51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,51,53,44,5
Во-вторых, при использовании for char in list(line)
он работает только с одной цифрой. Например, если используется число 51, оно разбивается на 5 и 1, я не хочу этого, поскольку они дадут другой результат, если будут использоваться в chr()
функции
Любая помощь была бы высоко оценена.
Ответ №1:
Две ошибки:
for char in list(line):
line
в нем есть запятые. Вы должны разделить это на запятые. Вызов list
этого не сделает. Вместо:
for char in line.strip().split(",")
И в следующей строке:
art = chr(int(line))
вы должны преобразовывать char
в int
, а не всю строку.
art = chr(int(char))
Но это все равно может привести к сбою, если у вас есть данные, которые не совсем так верны, как вы думаете. Чтобы предотвратить это:
try:
art = chr(int(char))
except ValueError:
art = " "
print ("Invalid data in this line:", line)
Комментарии:
1. Спасибо за вашу помощь, я внес эти изменения, и когда я использую цикл for, а затем пытаюсь напечатать char, он выдает ожидаемые результаты (53 52 56 и т.д.), Но когда я добавляю бит art =, который он выдает, выдает ошибку. Ошибка значения: недопустимый литерал для int() с основанием 10: ‘
2. нужно ли мне добавить еще один цикл for, чтобы удалить «из списка чисел?
3. У меня нет ваших данных, поэтому я не могу это проверить, но похоже, что где-то в вашем файле у вас есть пара запятых без числа между ними, или завершающая запятая в конце строки, или пробел перед запятой. Я отредактировал ответ, чтобы поместить ловушку для этого.