我试着读一个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编码吗?在
你报告了三个不同的问题。 这有点出乎意料,因为没有足够的信息可以确定,但您应该尝试以下方法:
输入编码:如注释所示,尝试“utf-8-sig”。这将从您的输入中删除Byte Order Mark(BOM)。
双引号:在
csv
参数中,指定quoting=csv.QUOTE_NONE
。这将告诉csv
库,CSV表是在没有使用引号的情况下编写的(用于转义字符,否则可能会被误认为是字段或行分隔符)。然而,这显然不是真的,因为输入的每个字段都有引号。尝试csv.QUOTE_MINIMAL
(默认值)或csv.QUOTE_ALL
。输出编码:你说输出包含“奇怪的符号”。我怀疑输出实际上没有问题,但是您使用的工具在默认情况下不能正确显示UTF-8文本:许多Windows应用程序(如Excel)仍然喜欢UTF-16和本地化的8位编码,如CP-1255。与问题1一样,您应该尝试编解码器“utf-8-sig”:BOM被许多查看者/编辑理解为编码提示。
相关问题 更多 >
编程相关推荐