此问题来由:最近闲来无事研究了爬虫,然后入坑了个爬取某天气网站的代码。
研究了一下,发现把数据写入csv文件之后,用Excel打开,发现中文乱码。
经过百度,发现了种方法,需要f.write(codecs.BOM_UTF8)
但是,知道py3版本以上的大佬们知道,write写入的只能是str,而 codecs.BOM_UTF8是bytes字节
所以,查到将字节转换成str方法如下:
# bytes object
b = b"example"
# str object
s = "example"
# str to bytes
bytes(s, encoding = "utf8")
# bytes to str
str(b, encoding = "utf-8")
# an alternative method
# str to bytes
str.encode(s)
# bytes to str
bytes.decode(b)
写入方法示例如下:
def write_data(data,name):
file_name = name
with open(file_name,'a+') as f:
f.write(bytes.decode(codecs.BOM_UTF8))
f_csv = csv.writer(f)
f_csv.writerows(data)