I have a file where each line has a pair of coordinates like so:
[-74.0104294, 40.6996416]
The code that I\'m using to read them in is:
even better way than @ZeroPiraeus solution use ast.literal_eval which can evaluate any literal of python (here a list literal compound of float literal)
import ast
m_verts = []
with open('Manhattan_Coords.txt') as f:
for line in f:
pair = ast.literal_eval(line)
m_verts.append(pair)
but for construction of the list even better is list comprehension
import ast
with open('Manhattan_Coords.txt') as f:
m_verts = [ast.literal_eval(line) for line in f]
For each line, you need to:
for
loop to iterate over the filestr.strip()
[1:-1]
', '
str.split()
and a list comprehension.float()
list.append()
That looks like this:
m_verts = []
with open('Manhattan_Coords.txt') as f:
for line in f:
pair = [float(s) for s in line.strip()[1:-1].split(", ")]
m_verts.append(pair)
After which, m_verts
looks like this:
>>> m_verts
[[-74.0104294, 40.6996416], ... ]
In general, you're better off iterating over the lines of a file than reading them all into a list at once with methods like splitlines()
... it's more readable, and with large files much more efficient.
Also, notice that I've used the more pythonic under_score style to name m_verts
, rather than your camelCase style - and that there's no need to specify 'r'
when opening a file for reading.