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.