Using `.rstrip()` and `.strip() to remove newline `\n`

Viewed 768

A follow up from a question I asked yesterday that allowed me to identify a new problem (How wonderful!). So I have this code that is converting a .dat file from (34354435.0000007, 623894584.000006) to 34354435.0000007, 623894584.000006 with .strip('()\n') and then removing a trailing newline with .rstrip('\n') so I can import it to matplotlib and plot a polygon. The order in the code is the other way around, but I don't think it matters as this brings up the same error regardless of where it is in the for loop;

lang=js
data_easting=[]
data_northing=[]

#Open the poly.dat file (in Python)
Poly = open('poly.dat','r')

#Loop over each line of poly.dat.
for line in Poly.readlines():
    line  = line.rstrip('\n')
    print (line +'_becomes')
    line  = line.strip('()\n')
    print (line)
    x,y = line.split(', ')
    data_easting.append(x)
    data_northing.append(y)
    
import numpy
data_easting = numpy.array(Easting,dtype=float)
data_northing = numpy.array(Northing,dtype=float)

from matplotlib import pyplot

I get a Value Error;

     16     line  = line.strip('()\n')
     17     print (line)
---> 18     x,y = line.split(', ')
     19     data_easting.append(x)
     20     data_northing.append(y)

ValueError: not enough values to unpack (expected 2, got 1)

And through the print function I've figured out it's trying to loop through the newline at the bottom (so when I try to split the data across x and y, it fails at the newline because the newline only has 1 value with no ", " defined in it.

...
(331222.6210000003, 672917.1531000007)_becomes
331222.6210000003, 672917.1531000007
_becomes

-----------------------------------------------

Isn't .rstrip supposed to remove the trailing newlines? I've also tried .replace, and including \r and in the rstrip function and I get the same result. What is wrong with my code that it won't respond to the .rstrip and .strip?

Alternatively, if there's a way to outright skip or stop the loop at the final data entry, that would bypass the problem I think.

Thanks,

A constricted learner.

1 Answers
  • Remove the extra blank line from the end of the file.

  • If extra blank lines are to be expected in the input, you’ll need to detect and ignore them:

    for line in Poly:
        if line == '\n':
            continue
    
        ...
    
Related