簡體   English   中英

使用python覆蓋csv文件中的第一列和最后一列

[英]Overwrite the first and last column in csv file using python

我是使用CSV模塊進行數據處理的新手。 而且我有輸入文件 輸入數據集 並使用此代碼`

import csv
path1 = "C:\\Users\\apple\\Downloads\\Challenge\\raw\\charity.a.data"
csv_file_path =          "C:\\Users\\apple\\Downloads\\Challenge\\raw\\output.csv.bak"

with open(path1, 'r') as in_file:
    in_file.__next__()
    stripped = (line.strip() for line in in_file)
    lines = (line.split(":$%:") for line in stripped if line)
    with open(csv_file_path, 'w') as out_file:
        writer = csv.writer(out_file)
        writer.writerow(('id', 'donor_id','last_name','first_name','year','city','state','postal_code','gift_amount'))
    writer.writerows(lines)

` 當前輸出文件

是否可以在csv文件的第一列和最后一列中刪除(:)。 我希望輸出像 預期輸出(刪除后:) 請幫我。

如果您只想在第一列和最后一列中消除“:”,則應該可以使用。 請記住,在閱讀數據集之前,應將數據集tab (或逗號以外的其他內容)分開,因為正如我在問題中評論的那樣,數據集中有逗號“,”。

path1 = '/path/input.csv'
path2 = '/path/output.csv'

with open(path1, 'r') as input, open(path2, 'w') as output:
file = iter(input.readlines())
output.write(next(file))

for row in file:
    output.write(row[1:][:-2] + '\n')

更新資料

因此,在提供您的代碼之后,我做了一個小的更改以從初始文件開始進行整個過程。 想法是一樣的。 您應該只排除每行的第一個和最后一個字符。 因此,您應該擁有line.strip()[1:][:-2]而不是line.strip()

import csv
path1 = "C:\\Users\\apple\\Downloads\\Challenge\\raw\\charity.a.data"
csv_file_path = "C:\\Users\\apple\\Downloads\\Challenge\\raw\\output.csv.bak"

with open(path1, 'r') as in_file:
    in_file.__next__()
    stripped = (line.strip()[1:][:-2] for line in in_file)
    lines = (line.split(":$%:") for line in stripped if line)
    with open(csv_file_path, 'w') as out_file:
        writer = csv.writer(out_file)
        writer.writerow(('id', 'donor_id','last_name','first_name','year','city','state','postal_code','gift_amount'))
        writer.writerows(lines)

暫無
暫無

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

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