【发布时间】:2019-04-05 05:49:45
【问题描述】:
我收到一个格式正确的 csv 文件,其中包含逗号的文本字段周围有双引号。
唉,我需要将它加载到 SQL Server 中,据我所知(请告诉我这里的错误)无法处理包含分隔符的引号括起来的字段。
所以,我想编写一个 python 脚本,它将 a) 将文件转换为管道分隔,b) 删除字段中存在的任何管道(我的感觉是逗号更常见,所以我想为了保存它们,另外我还有一些数字字段,至少在将来可能包含逗号)。
这是我必须做的代码:
import csv
import sys
source_file=sys.argv[1]
good_file=sys.argv[2]
bad_file=sys.argv[3]
with open(source_file, 'r') as csv_file:
csv_reader = csv.DictReader(csv_file)
with open(good_file, 'w') as new_file:
csv_writer = csv.DictWriter(new_file, csv_reader.fieldnames, delimiter='|')
headers = dict( (n,n) for n in csv_reader.fieldnames)
csv_writer.writerow(headers)
for line in csv_reader:
csv_writer.writerow(str.replace(line, '|', ' '))
我怎样才能增强它来做 b?
ps--我使用的是 python 2.6,IIRC。
【问题讨论】:
-
您能否将源 CSV 中的几行添加到您的问题中并显示您的预期输出?
标签: python sql-server csv import bcp