Python: абсолютно нубский вопрос

_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

stm5872449

Проблема - конвертировать их в 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

doublemother

Правильный код

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)

salamander

Только четные он, я думаю, хотел выбирать по счету, а не по тому, что там четное число записано. Ибо там вообще не число, а предложение.

psihodog

вот мне тоже так показалось

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 ]

stm5872449

Ага, человека, который еще видимо не осилил типизацию, сразу надо загрузить with-стейтментами, list comprehensions и функциями высших порядков. :)

apl13

С этого надо начинать же.
Оставить комментарий
Имя или ник:
Комментарий: