使用python覆盖csv文件中的第一列和最后一列
我是使用CSV模块进行数据处理的新手。我已经输入文件并使用此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)
如果你只是想消除在第一列和最后一列的':',这应该工作。请记住,在阅读数据集之前,您的数据集应该是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)
上述代码引发StopIteration错误。 – user229204
此代码只能与您在处理完成后创建的.csv文件一起使用。我会在我的回答中加入另一个解决方案,它使用你的代码从头开始完成整个过程。 – TasosGlrs
感谢@Tasos上面为我工作 – user229204
所以你要我们为你做这个吗?你有没有试过的代码? – Artagel
只是一个通知。请记住,'gift_amount'列的值中包含逗号(,),这意味着您的数据集必须是tab(或逗号以外的其他分隔符)。正如@Artagel所说,请提供一些你迄今为止所做的一些代码。 – TasosGlrs
我的初始输入是文本文件,格式是: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