簡體   English   中英

如何讀取 CSV 文件並將一行中的每個單元格添加到列表中?

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

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