簡體   English   中英

如何在Python中使用包含多個元素的列讀取CSV

[英]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(對於簡單的任務也可以)。

如果您對代碼不滿意或在某些測試用例中失敗,請閱讀,嘗試注釋 。我將對其進行修改並使其可行。

»Data.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.

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