簡體   English   中英

將 CSV 文件傳輸到 Python 列表

[英]Transferring CSV file to a Python list

我正在嘗試將數據從 CSV 文件獲取到 Python 中的列表。 這是我到目前為止所擁有的:

import csv

with open('RawEirgrid2.csv','rb') as csvfile:
    M = csv.reader(csvfile, delimiter=',')

print(M[0])

我正在嘗試打印列表中的第一項,只是確認代碼正在工作(目前沒有)。 我收到以下錯誤:

TypeError:“_csv.reader”對象不可下標

在我看到的每個示例中,它似乎應該是可下標的,所以我不確定發生了什么。

所有這些都將起作用:

with open('RawEirgrid2.csv', 'rb') as csvfile:
    reader = csv.reader(csvfile, delimiter=',')
    print next(reader)
with open('RawEirgrid2.csv', 'rb') as csvfile:
    reader = csv.reader(csvfile, delimiter=',')
    lines = list(reader)

print lines[0]
with open('RawEirgrid2.csv', 'rb') as csvfile:
    reader = csv.reader(csvfile, delimiter=',')
    for line in reader:
        print line
        break  # stop after the first line

csv.reader返回的對象是可迭代的,但不是序列,所以不能下標。 請注意,如果您嘗試在 with 語句之外使用reader ,則文件將被關閉,並且會出錯 - 直到您請求這些行,文件才真正被讀取。

這應該可以解決問題:

import csv

with open('RawEirgrid2.csv','rb') as csvfile:
    M = list(csv.reader(csvfile, delimiter=','))

print(M[0])

另一種選擇是numpy.genfromtxt ,例如:

import numpy as np
data = np.genfromtxt("yourfile.dat",delimiter=",")

這將使data成為一個 numpy 數組,其中包含與文件中一樣多的行和列

M 實際上是一個可迭代的,而不是一個列表。 您可以使用以下

next(M)

或者

l=[k for k in M]
print l[0]

針對@Eric 的棄用提示進行了編輯。

暫無
暫無

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

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