我通過將行的每個元素保存到列出的列名變數來讀取 csv。
例如:
data = []
with open('sample.txt', 'r') as file:
for line in file.readlines():
col1, col2, col3 = line.split('\t')
data.append([col1, col2, col3])
現在,如果我想對 中的特定列執行某些操作data,例如col1,我該怎么做?
下面的代碼不起作用:
for line in data:
print(col1)
相反,我需要對有問題的行元素進行硬編碼,如下所示:
for line in data:
print(line[0])
我想是因為我的方式閱讀,我所定義的CSV col1,col2和col3我應該能夠在我的串列中的元素來呼叫對應于這些列名。
是否有可能做到這一點?我不想使用匯入的模塊/包(如熊貓)。
uj5u.com熱心網友回復:
您已經定義了變數col1、col2和col3在腳本的特定范圍內(在for回圈內)和該代碼段之外,您無法訪問這些變數。我有兩個建議:
- 對列資料執行操作的最快方法可能是在執行之前插入一條陳述句
data.append()。換句話說,如果您想將 5 添加到第 2 列,您可以執行以下操作:
data = []
with open('sample.txt', 'r') as file:
for line in file.readlines():
col1, col2, col3 = line.split('\t')
col2 = 5 # Modify column before appending
data.append([col1, col2, col3])
- 如果您需要先收集所有資料,然后想在不同的步驟中對其進行修改,則可以開始另一個
for回圈。請記住,您現在將腳本運行的時間增加了一倍(您回圈資料兩次而不是一次)。您可以使用稱為“串列解包”的 Python 語法功能來恢復您的列變數,如下所示:
data = []
with open('sample.txt', 'r') as file:
for line in file.readlines():
col1, col2, col3 = line.split('\t')
data.append([col1, col2, col3])
modified_data = []
for row in data:
col1, col2, col3 = row # This is list unpacking
. . . # (do something with columns here)
modified_data.append([col1, col2, col3])
uj5u.com熱心網友回復:
我可以看到您想要避免 Pandas,它不是標準庫的一部分。
不過,我始終建議使用 CSV 庫來決議 CSV 檔案,并且 Python 的標準庫包含一個 CSV 模塊,該模塊具有您正在尋找的DictReader類:
import csv
data = []
with open('sample.txt', newline='') as f:
reader = csv.DictReader(f, delimiter='\t')
for row in reader:
data.append(row)
# ... and later
for datum in data:
print(datum['this_column'])
print(datum['that_column'])
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/391121.html
上一篇:從列中提取某些單詞
下一篇:如何用較少的代碼撰寫這些函式?
