Python使用utf8编码读写csv文件

2024-06-25 23:26:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着读一个csv文件,它的头包含外来字符,我有很多问题。在

首先,我用一个简单的csv.reader在

filename = 'C:\\Users\\yuval\\Desktop\\בית ספר\\עבודג\\new\\resources\\mk'+ str(mkNum) + 'Data.csv'
raw_data = open(filename, 'rt', encoding="utf8")
reader = csv.reader(raw_data, delimiter=',', quoting=csv.QUOTE_NONE)
x = list(reader)
header = x[0]
data = np.array(x[1:]).astype('float')

var头应该是一个包含文件头的数组,但是它返回给我的数组是

^{pr2}$

我不知道它为什么在第一个对象中加上\ufeff和双引号。在

之后,我需要写入另一个csv文件,并在头中使用外来字符。我试着这样做,但它把字符写成了奇怪的符号。在

with open('C:\\Users\\yuval\\Desktop\\בית ספר\\עבודג\\new\\variance reduction 1\\mk'+ str(mkNum) + 'Data.csv', 'w', newline='', encoding='utf8') as csvFile:
    csvWriter = csv.writer(csvFile, delimiter=',')
    csvWriter.writerow(newHeader)

有人知道如何解决这个问题并在csv文件头中使用utf8编码吗?在


Tags: 文件csvnewdatautf8filename字符users
1条回答
网友
1楼 · 发布于 2024-06-25 23:26:58

你报告了三个不同的问题。 这有点出乎意料,因为没有足够的信息可以确定,但您应该尝试以下方法:

  1. 输入编码:如注释所示,尝试“utf-8-sig”。这将从您的输入中删除Byte Order Mark(BOM)。

  2. 双引号:在csv参数中,指定quoting=csv.QUOTE_NONE。这将告诉csv库,CSV表是在没有使用引号的情况下编写的(用于转义字符,否则可能会被误认为是字段或行分隔符)。然而,这显然不是真的,因为输入的每个字段都有引号。尝试csv.QUOTE_MINIMAL(默认值)或csv.QUOTE_ALL

  3. 输出编码:你说输出包含“奇怪的符号”。我怀疑输出实际上没有问题,但是您使用的工具在默认情况下不能正确显示UTF-8文本:许多Windows应用程序(如Excel)仍然喜欢UTF-16和本地化的8位编码,如CP-1255。与问题1一样,您应该尝试编解码器“utf-8-sig”:BOM被许多查看者/编辑理解为编码提示。

相关问题 更多 >