我正在尝试读取一个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标头应该是一个包含文件头的数组,但它返回给我的数组是
['\ufeff"dayPart"', '"length"', '"ifPhoto"', '"ifVideo"', '"ifAlbum"', '"לא"', '"הוא"', '"בכל"', '"אותם"', '"זה"', '"הם"', '"כדי"', '"את"', '"יש"', '"לי"', '"היא"', '"אני"', '"רק"', '"להם"', '"על"', '"עם"', '"של"', '"המדינה"', '"כל"', '"גם"', '"הזה"', '"אם"', '"ישראל"', '"לכל"', '"מי"', '"ל"', '"אמסלם"', '"לנו"', '"אבל"', '"זו"', '"אין"', '"שבת"', '"שלום"', '"כ"', '"שלנו"', '"היום"', '"ומבורך"', '"ח"', '"דודי"', '"ר"', '"הפנים"', '"מה"', '"כי"', '"ה"', '"אחד"', '"ולא"', '"יותר"']
我不知道为什么它会在第一个对象和双引号中添加\ 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编码?
您报告了三个不同的问题。这是对蓝色的一点猜测,因为没有足够的信息可以肯定,但你应该尝试以下方法:
csv
参数中,指定quoting=csv.QUOTE_NONE
。这告诉csv
库,CSV表是在不使用引号的情况下编写的(用于转义可能会被误认为字段或行分隔符的字符)。但是,这显然不正确,因为输入在每个字段周围都有引号。请尝试使用csv.QUOTE_MINIMAL
(默认值)或csv.QUOTE_ALL
。