How can I read in my file line by line with each line as a list of floats?

前端 未结 2 689
萌比男神i
萌比男神i 2021-01-29 05:56

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:

2条回答
  •  被撕碎了的回忆
    2021-01-29 06:18

    For each line, you need to:

    1. Read it
      ... using a for loop to iterate over the file
    2. Strip whitespace including newlines
      ... using str.strip()
    3. Lose the first and last characters (brackets)
      ... using string slicing: [1:-1]
    4. Split on the substring ', '
      ... using str.split() and a list comprehension.
    5. Convert the resulting strings into floats
      ... using float()
    6. Add each pair of floats to a list
      ... using 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.

提交回复
热议问题