【发布时间】:2017-01-21 14:49:39
【问题描述】:
我有一些 csv 文件可能包含也可能不包含不受欢迎的“”à 之类的字符,所以我想编写一个简单的脚本,该脚本将输入 csv 并用这些字符输出 csv(或其内容)替换为更标准的字符,因此在示例中:
bad_chars = '“”à'
good_chars = '""a'
到目前为止的问题是我的代码似乎生成了一个编码错误的 csv?在简化此过程和/或确保我的输出 csv 不会强制使用不正确的正则表达式编码(也许使用熊猫)方面的任何帮助将不胜感激?
尝试:
import csv, string
upload_path = sys.argv[1]
input_file = open('{}'.format(upload_path), 'rb')
upload_csv = open('{}_fixed.csv'.format(upload_path.strip('.csv')), 'wb')
data = csv.reader(input_file)
writer = csv.writer(upload_csv, quoting=csv.QUOTE_ALL)
in_chars = '\xd2\xd3'
out_chars = "''"
replace_list = string.maketrans(in_chars, out_chars)
for line in input_file:
line = str(line)
new_line = line.translate(replace_list)
writer.writerow(new_line.split(','))
input_file.close()
upload_csv.close()
【问题讨论】:
-
不是您提出的问题的直接解决方案,但请查看 unidecode 库 pypi.python.org/pypi/Unidecode/0.04.9 - 它将非 ascii 字符转换为 ascii 近似值(智能引号到直引号等)。