tags:

views:

272

answers:

3

Pulling my hair out here... have been playing around with this for the last hour but I cannot get it to do what I want, ie. remove the newline sequence.

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()
+7  A: 

The clue is in the signature of rstrip.

It returns a copy of the string, but with the desired characters stripped, thus you'll need to assign line the new value:

line = line.rstrip('\n')

This allows for the sometimes very handy chaining of operations:

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

As Max. S says in the comments, Python strings are immutable which means that any "mutating" operation will yield a mutated copy.

This is how it works in many frameworks and languages. If you really need to have a mutable string type (usually for performance reasons) there are string buffer classes.

Skurmedel
More generally, strings in Python are immutable. Once created, they can't be changed. Any function that does something to a string returns a copy.
Max Shawabkeh
Indeed. Maybe I should put that in the answer.
Skurmedel
@Skurmedel Thanks, I new it had to be something simple, ...my own fault for only skimming through python doc.
volting
@max thanks for mentioning that.
volting
+3  A: 

you can do it like this

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()
ghostdog74
+2  A: 

As alluded to in Skurmedel's answer and the comments, you need to do something like:

stripped_line = line.rstrip()

and then write out stripped_line.

GreenMatt