[英]How to read CSV File and add each cell in a row to a list?
我有一個 CSV 文件,如下所示:
104 109 113 111 108 114
95 100 109 103 103 110
兩行,每個數字都有自己的單元格。
如何讀取每行的 CSV 文件並將該行的每個單元格添加到列表中?
輸出應如下所示:
List_1 = [104, 109, 113, 111, 108, 114]
List_2 = [95, 100, 109, 103, 103, 110]
另外我需要列表中的數字作為整數而不是字符串。
我只想將每一行存儲在字典中:
d = {}
with open('rows.csv') as f:
for row, line in enumerate(f, start=1):
d['Line_%d' % row] = list(map(int, line.split()))
print(d)
# {'Line_1': [104, 109, 113, 111, 108, 114], 'Line_2': [95, 100, 109, 103, 103, 110]}
然后你可以像這樣訪問每一行:
>>> d['Line_1']
[104, 109, 113, 111, 108, 114]
>>> d['Line_2']
[95, 100, 109, 103, 103, 110]
更新:
根據評論中的要求,如果您的文件有分號;
作為分隔符,您可以使用csv庫:
from csv import reader
d = {}
with open('rows.csv') as f:
csv_reader = reader(f, delimiter=';')
for i, line in enumerate(csv_reader, start=1):
d['Line_%d' % i] = list(map(int, line))
print(d)
只需使用map
將字符串列表轉換為整數列表並附加到輸出列表中
final=[]
with open('test.csv') as f:
for row in f:
final.append(list(map(int,row)))
您可以使用pandas
read_csv
函數來讀取 CSV 文件。 之后,您將擁有一個DataFrame
對象。 使用df.values.tolist()
您將獲得所有行的列表作為列表。
my.csv:
1 2 3 4 5
6 7 8 9 0
Python:
with open("my.csv") as f:
lists = [ list(map(int, i.split())) for i in f.readlines() ]
print(lists[0])
print(lists[1])
輸出:
[1, 2, 3, 4, 5]
[6, 7, 8, 9, 0]
如果您想在以后對數據進行數學運算,您可以考慮使用numpy
模塊,您可以使用numpy.loadtxt
函數(請記住, csv
文件實際上是純文本文件)。 使用示例: test.csv
是我創建的文件,它包含 2 行,每行 3 個值
1 2 3
4 5 6
然后您可以通過以下方式創建 numpy 數組:
import numpy as np
data = np.load('test.csv',int,delimiter=' ')
test.csv
是文件名, int
是您需要整數的信息,而delimiter=' '
表示文件中的值以空格分隔。 您可以通過提供行索引和元素索引來訪問 numpy 數組中的值
print(data[0][0]) #prints 1
print(data[1][2]) #prints 6
如果您想獲取值list
,只需將data[index_of_row]
傳遞到list()
list1 = list(data[0])
list2 = list(data[1])
print(list1) #prints [1, 2, 3]
print(list2) #prints [4, 5, 6]
您也可以使用 csv.reader() 模塊以這種方式解決它。
with open(filename) as f:
reader = csv.reader(f)
next(reader)
list_ = []
for row in reader:
list_.append(row)
訪問第一行(示例中的line_1 = list_[0]
) line_1 = list_[0]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.