rstrip没有删除换行符char我做错了什么?

时间:2010-01-23 02:32:28

标签: python newline

把我的头发拉出来......在最后一小时里一直在玩这个但是我不能让它做我想做的事,即。删除换行序列。

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()

3 个答案:

答案 0 :(得分:22)

线索在rstrip的签名中。

它返回字符串的副本,但删除了所需的字符,因此您需要为line分配新值:

line = line.rstrip('\n')

这允许有时非常方便的操作链接:

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

正如Max. S在评论中所说,Python字符串是不可变的,这意味着任何“变异”操作都会产生变异副本。

这就是它在许多框架和语言中的工作方式。如果你真的需要一个可变的字符串类型(通常是出于性能原因),那就有字符串缓冲类。

答案 1 :(得分:3)

你可以这样做

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()

答案 2 :(得分:2)

在Skurmedel的回答和评论中提到,你需要做类似的事情:

stripped_line = line.rstrip()

然后写出stripped_line。