2017-04-01 69 views
0

我是使用CSV模塊進行數據處理的新手。我已經輸入文件Input Data Set並使用此code`使用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) 

'Current Output File

是否可以刪除(:)在CSV文件的第一和最後一列。而我想輸​​出像 Expected OUTPUT(After removing :) 請幫助我。

+0

所以你要我們爲你做這個嗎?你有沒有試過的代碼? – Artagel

+0

只是一個通知。請記住,'gift_amount'列的值中包含逗號(,),這意味着您的數據集必須是tab(或逗號以外的其他分隔符)。正如@Artagel所說,請提供一些你迄今爲止所做的一些代碼。 – TasosGlrs

+0

我的初始輸入是文本文件,格式是:id:$%:donor_id:$%:last_name:$%:first_name:$%:year:$%:city:$%:state:$%:postal_code:$ %:gift_amount:$ :1:$%:10763:$%:Aaron和Shirley Family Foundation:$%:Aaron:$%:2017:$%:New York:$%:NY:$%:10065:$ %:380.00:它被轉換成csv文件。 – user229204

回答

1

如果你只是想消除在第一列和最後一列的':',這應該工作。請記住,在閱讀數據集之前,您的數據集應該是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()你應該有line.strip()[1:][:-2]

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) 
+0

上述代碼引發StopIteration錯誤。 – user229204

+0

此代碼只能與您在處理完成後創建的.csv文件一起使用。我會在我的回答中加入另一個解決方案,它使用你的代碼從頭開始完成整個過程。 – TasosGlrs

+0

感謝@Tasos上面爲我工作 – user229204

相關問題