我有一个读取管道“|”的小脚本 分隔的 csv 文件,然后将其以逗号分隔的形式写入另一个文件。它工作正常。代码、输入文件和输出文件如下:
import csv
ifile = "d:\\python\\project\\cars-original.csv"
ofile = "d:\\python\\project\\cars.csv"
with open(ifile, 'r') as f:
reader = csv.reader(f, delimiter='|')
with open(ofile, 'w', newline='') as of:
writer = csv.writer(of, delimiter=',')
for row in reader:
writer.writerow(row)
Reading|Make|Model|Type|Value Reading 0|Toyota|Previa|distance|19.83942 Reading 1|Dodge|Intrepid|distance|31.28257
Reading,Make,Model,Type,Value Reading 0,Toyota,Previa,distance,19.83942 Reading 1,Dodge,Intrepid,distance,31.28257
我现在想修改脚本,以便它可以自动读取分隔符类型。
我在网上找到了几个例子,但是当我运行我的时,我得到一个空白文件用于输出。没有错误,只是空白。不知道我做错了什么。
我修改(损坏)的脚本:
import csv
ifile = "d:\\python\\projects\\cars-original.csv"
ofile = "d:\\python\\projects\\cars.csv"
with open(ifile, 'r') as f:
reader = csv.reader(f)
dialect = csv.Sniffer().sniff(f.read(1024), delimiters=',|')
with open(ofile, 'w', newline='') as of:
writer = csv.writer(of, dialect)
for row in reader:
writer.writerow(row)
这有效:
import csv
ifile = "d:\\python\\project\\cars-original.csv"
ofile = "d:\\python\\project\\cars.csv"
with open(ifile, 'r') as f:
dialect = csv.Sniffer().sniff(f.readline(), [',', '|'])
f.seek(0)
reader = csv.reader(f, dialect)
with open(ofile, 'w', newline='') as of:
writer = csv.writer(of, delimiter=',')
for row in reader:
writer.writerow(row)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句