簡體   English   中英

從文本文件中讀取值並將其存儲到列表中

[英]reading values from a text file and storing it into lists

我在文本文件中有值,例如:

1,2,3,4
1,1,1,1
4,3,2,1
2,2,2,2
   ...etc

現在我想將每一行存儲到一個列表中,因此,我創建了一個列表來存儲這些值

numbers = [[]]

我將如何將這些值存儲到列表中,以便從示例aboe:

numbers[1] = [1,2,3,4]
          ... etc

到目前為止我有這個:

    with open(s) as f :
    for s in f:
        numbers = [l.split(',') for l in f.readline()]

但我不確定這是否是正確的方法,或者是否有更好的方法來做到這一點

先謝謝您的幫助

您應該將輸入轉換為int。 此外,你可以做一個單行:

with open('test.txt') as f:
    numbers = [[int(j) for j in i.split(',')] for i in f.read().split('\n')]

>>> print numbers
[[1,2,3,4],
 [1,1,1,1],
 [4,3,2,1],
 [2,2,2,2]]

您可以將csv模塊與列表推導和/或map

import csv
with open('text1.txt') as f:
    numbers = [map(int, row) for row in csv.reader(f)]

>>> numbers
[[1, 2, 3, 4], [1, 1, 1, 1], [4, 3, 2, 1], [2, 2, 2, 2]]

對於Python 3,您必須在地圖周圍添加額外的列表調用或使用列表理解(將在Python 2和3中都有效):

numbers = [list(map(int, row)) for row in csv.reader(f)]
#or
numbers = [[int(x) for x in row] for row in csv.reader(f)]

無需導入任何模塊即可:

>>> with open('text1.txt') as f:
    numbers = [[int(x) for x in line.split(',')] for line in f]
...     
>>> numbers
[[1, 2, 3, 4], [1, 1, 1, 1], [4, 3, 2, 1], [2, 2, 2, 2]]

在這里你可以看到你需要迭代文件對象而不是file.readline ,對文件對象的迭代一次返回一行,然后我們將該行和它的項分成整數。 file.readline()只返回一行,而在你的代碼中,你只是遍歷那一行,這是錯誤的。)

rows = []
with open("foo.txt") as f:
    rows = [l.split() for l in f]

產量

[['1,2,3,4'], ['1,1,1,1'], ['4,3,2,1'], ['2,2,2,2']]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM