Reading a file into a multidimensional array with Python

前端 未结 5 1294
迷失自我
迷失自我 2021-02-20 02:56

If I have a text file like this:

Hello World
How are you?
Bye World

How would I read it into a multidimensional array like this:



        
相关标签:
5条回答
  • 2021-02-20 03:07

    Adding to the accepted answer:

    with open("textFile.txt") as textFile:
        lines = [line.strip().split() for line in textFile]
    

    This will remove '\n' if it is appended to the end of each line.

    0 讨论(0)
  • 2021-02-20 03:09

    Also don't forget to use strip to remove the \n:

    myArray = []
    textFile = open("textFile.txt")
    lines = textFile.readlines()
    for line in lines:
        myArray.append(line.split(" "))
    
    0 讨论(0)
  • 2021-02-20 03:23

    You can use map with the unbound method str.split:

    >>> map(str.split, open('testFile.txt'))
    [['Hello', 'World'], ['How', 'are', 'you?'], ['Bye', 'World']]
    

    In Python 3.x, you have to use list(map(str.split, ...)) to get a list because map in Python 3.x return an iterator instead of a list.

    0 讨论(0)
  • 2021-02-20 03:30

    A good answer would be :

    def read_text(path):
        with open(path, 'r') as file:
            line_array = file.read().splitlines()
            cell_array = []
            for line in line_array:
                cell_array.append(line.split())
            print(cell_array)
    

    Which is optimized for readability.

    But python syntax let's us use less code:

    def read_text(path):
        with open(path, 'r') as file:
            line_array = file.read().splitlines()
            cell_array = [line.split() for line in line_array]
            print(cell_array)
    

    And also python let's us do it only in one line!!

    def read_text(path):
        print([[item for item in line.split()] for line in open(path)])
    
    0 讨论(0)
  • 2021-02-20 03:32

    Use a list comprehension and str.split:

    with open("textFile.txt") as textFile:
        lines = [line.split() for line in textFile]
    

    Demo:

    >>> with open("textFile.txt") as textFile:
            lines = [line.split() for line in textFile]
    ...     
    >>> lines
    [['Hello', 'World'], ['How', 'are', 'you?'], ['Bye', 'World']]
    

    with statement:

    It is good practice to use the with keyword when dealing with file objects. This has the advantage that the file is properly closed after its suite finishes, even if an exception is raised on the way. It is also much shorter than writing equivalent try-finally blocks.

    0 讨论(0)
提交回复
热议问题