[英]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.