Python: абсолютно нубский вопрос
Проблема - конвертировать их в stringsПри чтении из файла и так получаются строки.
Разве в результате первой половины приведенной программы содержимое output.txt уже не находится в виде strings?В результате первой половины программы файл output.txt почти не будет отличаться от input.txt (только лишние '\n' появятся).
смочь выбрать из них четныеСтроки не бывают четными, четными бывают целые числа.
Ошибка, получающаяся в результате этой программы, "TypeError: not all arguments converted during string formatting", не имеет ничего общего с твоим вопросом. Оператор % для строк осуществляет не взятие остатка, а форматирование.
Правильный код
f = open ('input.txt', 'r')
g = open ('output.txt', 'w')
for s in f:
n = int(s) # приведение типа, получение числа из строки
if n % 2 == 0:
g.write(s)
f.close
g.close
Правильный код
with open('input.txt', 'r') as r:
with open('output.txt', 'w') as w:
for s in r:
n = int(s) # приведение типа, получение числа из строки
if n % 2 == 0:
w.write(s)
Только четные он, я думаю, хотел выбирать по счету, а не по тому, что там четное число записано. Ибо там вообще не число, а предложение.
with open('input.txt', 'r') as r, open('output.txt', 'w') as w:
[ w.write(s) for i,s in enumerate(r) if i % 2 == 1 ]
Ага, человека, который еще видимо не осилил типизацию, сразу надо загрузить with-стейтментами, list comprehensions и функциями высших порядков.
С этого надо начинать же.
Оставить комментарий
_hedgehog-
Первые шаги. В файле input.txt у меня есть тест из нескольких предложений, каждое с новой строки. Проблема - конвертировать их в strings, чтобы смочь выбрать из них четные и записать в файл output-new.txt. Разве в результате первой половины приведенной программы содержимое output.txt уже не находится в виде strings?Если нет, то как перевести содержимое файла в strings и записать в другой файл? Спасибо!
g = open ('input.txt', 'r')
h = open ('output.txt', 'w')
for i in g:
h.write(str(i) + '\n')
h.close
g.close
h = open ('output.txt', 'r')
f = open ('output-new.txt', 'w')
for i in h:
if i % 2 == 1:
f.write(i)
h.close
f.close