Rstrip не удаляет новую строку char, что я делаю неправильно?
Вытягивая мои волосы здесь... играли с этим в течение последнего часа, но я не могу заставить его делать то, что хочу, т.е. удалите последовательность новой строки.
def add_quotes( fpath ):
ifile = open( fpath, 'r' )
ofile = open( 'ofile.txt', 'w' )
for line in ifile:
if line == '\n':
ofile.write( "\n\n" )
elif len( line ) > 1:
line.rstrip('\n')
convertedline = "\"" + line + "\", "
ofile.write( convertedline )
ifile.close()
ofile.close()
Ответы
Ответ 1
Ключ находится в сигнатуре rstrip
.
Возвращает копию строки, но с нужными символами, поэтому вам нужно назначить line
новое значение:
line = line.rstrip('\n')
Это позволяет иногда очень удобную цепочку операций:
"a string".strip().upper()
Как Макс. S говорит в комментариях, строки Python неизменяемы, что означает, что любая "мутирующая" операция даст мутированную копию.
Вот как это работает во многих фреймворках и языках. Если вам действительно нужно иметь изменяемый тип строки (обычно по соображениям производительности), существуют классы буфера строк.
Ответ 2
вы можете сделать это, как это
def add_quotes( fpath ):
ifile = open( fpath, 'r' )
ofile = open( 'ofile.txt', 'w' )
for line in ifile:
line=line.rstrip()
convertedline = '"' + line + '", '
ofile.write( convertedline + "\n" )
ifile.close()
ofile.close()
Ответ 3
Как указано в ответах Skurmedel и комментариях, вам нужно сделать что-то вроде:
stripped_line = line.rstrip()
а затем выпишите stripped_line.