Skip to main content
 首页 » 编程设计

Python pickle 不会打印出诸如 'â,é,č,ć' 之类的字符

2025年05月04日9youxin

我对编程术语不是很熟悉,请多多包涵。

我正在制作一个语言程序,它必须能够保存和读取包含 utf-8 字符的文件文本。

我在用 pickle

WORDS = [['eat','manger','v'],['drink','boire','v'], 
["cake",'le gateau','n'],['coffee','le café','n']] 
 
wordDatabase = open('wordsForProgram.txt','wb') 
pickle.dump(WORDS,wordDatabase) 
wordDatabase.close() 
 
inFile = open('wordsForProgram.txt','rb') 
newList = pickle.load(inFile) 
print(newList) 

它打印出:

[['eat', 'manger', 'v'], 
['drink', 'boire', 'v'], 
['cake', 'le gateau', 'n'], 
['coffee', 'le café', 'n']] 

脚本中的列表还将“le café”更改为“le cafĂ©”。当我将其更改回来时,它会再次运行,直到我关闭并重新打开脚本。

谢谢!

请您参考如下方法:

您的文件顶部是否有# -*- coding: utf-8 -*-?

# -*- coding: utf-8 -*- 
import pickle 
WORDS = [['eat','manger','v'],['drink','boire','v'], 
["cake",'le gateau','n'],['coffee','le café','n']] 
 
wordDatabase = open('wordsForProgram.txt','wb') 
pickle.dump(WORDS,wordDatabase) 
wordDatabase.close() 
 
inFile = open('wordsForProgram.txt','rb') 
newList = pickle.load(inFile) 
 
for i in newList: 
    for j in i: 
        print j 

WORDS 和 newList 的输出相同:

eat 
manger 
v 
drink 
boire 
v 
cake 
le gateau 
n 
coffee 
le café 
n 

您也可以尝试使用编解码器模块:

# -*- coding: utf-8 -*- 
import pickle 
import codecs 
WORDS = [['eat','manger','v'],['drink','boire','v'], 
["cake",'le gateau','n'],['coffee','le café','n']] 
 
wordDatabase = codecs.open('wordsForProgram.txt', 'w', 'utf-8') 
pickle.dump(WORDS,wordDatabase) 
wordDatabase.close() 
 
inFile = codecs.open('wordsForProgram.txt','rb') 
newList = pickle.load(inFile) 
 
for i in newList: 
    for j in i: 
        print j