rstrip, не удаляющий символ новой строки, что я делаю неправильно? [дубликат]

Этот вопрос уже имеет ответ здесь:

Получение по запросу моих волос здесь... играло вокруг с этим в течение прошлого часа, но я не могу заставить это делать то, что я хочу, т.е. удаляю последовательность новой строки.

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()
12
задан volting 23 January 2010 в 02:32
поделиться

3 ответа

Разгадка находится в подписи rstrip.

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

line = line.rstrip('\n')

Это позволяет иногда очень удобно выполнять цепочки операций:

"a string".strip().upper()

As Max. S говорит в комментариях, что питоновские строки неизменны, что означает, что любая "мутирующая" операция приведет к мутирующей копии.

Так это работает во многих фреймворках и языках. Если вам действительно нужен мутируемый тип строки (обычно из соображений производительности), то существуют буферные классы строк.

22
ответ дан 2 December 2019 в 05:40
поделиться

Вы можете сделать это так, как это

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
ответ дан 2 December 2019 в 05:40
поделиться

, как указано в ответе Skurmedel и комментариями, вам нужно сделать что-то вроде:

stripped_line = line.rstrip()

, а затем выписывают strack_line.

2
ответ дан 2 December 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: