我想将cyrillic符号写入csv文件但我得到unicode编码错误。英文符号非常完美。我使用的是Python 3.6.2。
UnicodeEncodeError:' ascii'编解码器无法对字符进行编码 1-6:序数不在范围内(128)
#include<stdio.h>
#include<string.h>
int main(){
char buffer[5]="1234"; //5 for '\0'
//char buffer[]="";
char pattern[]="1234";
char ch;
int idxToDel = 0;
while(1){
scanf("%c",&ch);
memmove(&buffer[idxToDel], &buffer[idxToDel + 1], strlen(buffer) - idxToDel);
buffer[3]=ch;
printf("%s",buffer);
}
return 0;
}
答案 0 :(得分:4)
打开文件时声明文件的编码。 <{3}}文档中还需要newline=''
。
import csv
with open('test.csv','w',encoding='utf8',newline='') as csvfile:
csvfile = csv.writer(csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
hello = 'привет, мир!'
csvfile.writerow([hello])
答案 1 :(得分:0)
您只需要在将hello
字符串写入文件(csv)之前对其进行编码。否则Python期望您只输入ascii
个字符,如果是非ascii字符,您可以使用utf-8
编码:
# -*- coding: utf-8 -*-
import csv
with open("test.csv", 'w') as csvfile:
csvfile = csv.writer(csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
hello = u'привет, мир!' # Better way of declaring a unicode string literal
csvfile.writerow([hello.encode("utf-8")])
答案 2 :(得分:0)
在您的文件中添加此代码
# encoding=utf8
--------------------------------------
import sys
reload(sys)
sys.setdefaultencoding('utf8')
答案 3 :(得分:0)
对于Python 2专家,请使用此函数代替普通的“打开”函数:
import codecs
codecs.open(out_path, encoding='utf-8', mode='w')
这等效于Python 3中的以下内容:
open(out_path, 'w', encoding='utf8')