鍍金池/ 問答/人工智能  Python/ python3 scrpy編寫pipe通道時write寫入編碼問題。

python3 scrpy編寫pipe通道時write寫入編碼問題。

import json

class TencentPipeline(object):
    def __init__(self):
        self.filename = open("tencent.json", 'w')

    def process_item(self, item, spider):
        text = json.dumps(dict(item),ensure_ascii = False) + "\n"
        self.filename.write(str(text.encode("utf-8")))
        return item
    def close_spider(self, spider):
        self.filename.close()
write 寫入必須是str類型的,改為str了,但是讀取的數(shù)據(jù)卻全是編碼。
在讀取過程中 命令臺顯示的卻是中文,而到文件里面卻全是編碼。
我不是轉(zhuǎn)換了編碼了嗎?
沒成功還是什么問題,求大佬指教。
回答
編輯回答
笨笨噠

text.encode("utf-8")是把txt編碼為uft-8得到的結(jié)果是bytes數(shù)組
text.encode("gkb").decode('utf-8')是把txt編碼為gbk,再解碼成utf-8得到str,也就是把txt從gbk編碼轉(zhuǎn)到utf-8編碼,用decode而不是str

self.filename = open("tencent.json", 'wb')    #二進制格式打開

self.filename.write(text.encode("utf-8"))     #寫入utf-8編碼的二進制文件
2018年3月26日 00:53