Python3 CSV编码问题

时间:2018-03-29 10:10:38

标签: python-3.x csv encoding

我正在尝试将一些信息添加到CSV文件中的一行,但在更新的CSV文件中,特殊字符(²,±)编码不好。让我澄清一下:

所以基本上我有一个带有以下示例行的CSV文件:

row = ["Some info", "Cell with special characters (², ±)", "Some more info"]

我正在尝试向第二列添加一些文本,因此我编写了以下代码

import csv
new_rows = []

# Open CSV file
with open('file_1.csv', 'r', encoding='UTF-8') as f1
    reader =  csv.reader(f1, delimiter=',')
    for row in reader:
        # Add text to cell, save row to memory
        row[1] = row[1] + " is causing trouble"
        new_rows.append(row)

# Write rows in new CSV-file
with open('file_2.csv', 'w', encoding='UTF-8', newline='') as of:
    writer =  csv.writer(of, delimiter=',')
    writer.writerows(new_rows)

我预期的第二列中的输出如下:

"Cell with special characters (², ±) is causing troubles"

但我得到以下输出:

"Cell with special characters (??, ??) is causing troubles"

我尝试通过将编码更改为Latin-1来解决问题,或者甚至根本不提及代码中的编码,但似乎没有任何工作!

我在这里错过了什么或做错了什么?

1 个答案:

答案 0 :(得分:0)

您的源文件可能是latin-1,您在第二个文件中将mojibakes编码为utf-8。你的代码没有错。

您需要在以良好编码读取源代码后决定是否要生成latin1或utf-8 csv(并且可能添加BOM https://github.com/pyexcel/pyexcel-io/issues/30)作为目标(也许您可以查看十六进制转储如何编码并给我们一些线索)。