簡體   English   中英

使用Python 2.7解析CSV文件

[英]Parsing CSV files using Python 2.7

我正在嘗試編寫一個腳本,該腳本將打開CSV文件,並根據csv.csv 4列中唯一電話號碼的匹配條件將文件中的行寫入新的CSV文件。 電話號碼始終在第4列中,並且經常在文件中重復,但是其他列通常是唯一的,因此每一行本質上都是唯一的。

我正在讀取的csv文件中的一行看起來像這樣:( TN為9259991234

2,PPS,2015-09-17T15:44,9259991234,9DF51758-A2BD-4F65-AAA2

我在下面的代碼中遇到錯誤,說“ _csv.writer”不可迭代,而且我不確定如何修改代碼來解決問題。

import csv
import sys
import os

os.chdir(r'C:\pTest')

with open(r'csv.csv', 'rb') as f:
    reader = csv.reader(f, delimiter=',')
    with open (r'new_csv.csv', 'ab') as new_f:
        writer = csv.writer(new_f, delimiter=',')
        for row in reader:
            if row[3] not in writer:
                writer.writerow(new_f)

您的錯誤源於以下表達式:

row[3] not in writer

您無法針對csv.writer()對象測試成員資格。 如果要跟蹤是否已經處理過電話號碼,請使用單獨的set()對象來跟蹤那些電話號碼:

with open(r'csv.csv', 'rb') as f:
    reader = csv.reader(f, delimiter=',')
    with open (r'new_csv.csv', 'ab') as new_f:
        writer = csv.writer(new_f, delimiter=',')
        seen = set()
        for row in reader:
            if row[3] not in seen:
                seen.add(row[3])
                writer.writerow(row)

注意,我還更改了您的writer.writerow()調用; 您要寫入行,而不是文件對象。

暫無
暫無

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

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