使用Python从csv文件中删除非ascii字符

时间:2016-05-26 09:50:02

标签: python csv unicode ascii

我正在尝试从文件中删除非ascii字符。我实际上是想将包含这些字符的文本文件(例如,hello§,å½¢æä†å¯¹æ¯“ã€,花å)转换为csv文件。

然而,我无法遍历这些字符,因此我想删除它们(即切断或放置空格)。这是代码(从各种来源研究和收集)

代码的问题是,在运行脚本之后,csv / txt文件尚未更新。这意味着角色仍然存在。完全不知道如何去做这件事。研究了一天:(

非常感谢你的帮助!

import csv

txt_file = r"xxx.txt"
csv_file = r"xxx.csv"

in_txt = csv.reader(open(txt_file, "rb"), delimiter = '\t')
out_csv = csv.writer(open(csv_file, 'wb'))
for row in in_txt:
    for i in row:
        i = "".join([a if ord(a)<128 else''for a in i])

out_csv.writerows(in_txt)

1 个答案:

答案 0 :(得分:3)

变量赋值不会神奇地转移到原始来源;你必须建立一个你改变的行的新列表:

import csv

txt_file = r"xxx.txt"
csv_file = r"xxx.csv"

in_txt = csv.reader(open(txt_file, "rb"), delimiter = '\t')
out_csv = csv.writer(open(csv_file, 'wb'))
out_txt = []
for row in in_txt:
    out_txt.append([
        "".join(a if ord(a) < 128 else '' for a in i)
        for i in row
    ]

out_csv.writerows(out_txt)