[英]How to read CSV with column with more than one element in Python
我有以下CSV文件:
id;name;duration;predecessors;
10;A;7;;
20;B;10;10;
25;B2;3;10;
30;C;5;10;
40;D;5;20,30, 25;
也就是說,第四列中的最后一行,我有三個元素(20、30、25),以逗號分隔。
我有以下代碼:
csv_file = open(path_to_csv, 'r')
csv_file_reader = csv.reader(csv_file, delimiter=',')
first_row = True
for row in csv_file_reader :
if not first_row:
print(row)
else :
first_row = False
但我得到一個奇怪的輸出:
['10;A;7;;']
['20;B;10;10;']
['25;B2;3;10;']
['30;C;5;10;']
['40;D;5;20', '30', ' 25;']
有任何想法嗎? 提前致謝
你已經在你的描述,這代表C OMMA 小號 eparated V alues指定的CSV。 但是,您的數據使用分號。
考慮將定界符指定為;
對於CSV庫:
with open(path_to_csv, 'r') as csv_file:
csv_file_reader = csv.reader(csv_file, delimiter=';')
...
當我們在這里時,請注意使用with
語句打開文件的更改。 使用with
語句可以使您以一種語言健壯的方式打開文件。 無論發生什么情況(異常,退出等),Python都會保證該文件將被關閉並占用所有資源。 您不需要關閉文件,只需退出該塊(取消縮進)。 這是“ Pythonic”,也是一種很好的習慣。
✓ @Antonio ,我感謝上面的回答。 我們知道CSV是一個帶有逗號分隔值的文件,默認情況下,Python的csv模塊基於此文件工作。
✓沒問題,您仍然可以在不使用csv模塊的情況下從中讀取信息。
✓根據您提供的有問題的輸入,我編寫了另一個簡單的解決方案,而沒有使用任何Python模塊讀取CSV(對於簡單的任務也可以)。
如果您對代碼不滿意或在某些測試用例中失敗,請閱讀,嘗試並注釋 。我將對其進行修改並使其可行。
id;name;duration;predecessors;
10;A;7;;
20;B;10;10;
25;B2;3;10;
30;C;5;10;
40;D;5;20,30, 25;
現在,看下面的代碼(查找並打印第4列包含多個元素的所有行):
with open ("Data.csv") as csv_file:
for line in csv_file.readlines()[1:]:
arr = line.strip().split(";")
if len(arr[3].split(",") )> 1:
print(line) # 40;D;5;20,30, 25;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.