如何使用“特殊字符”保存/加载pickle目录/列表

2024-07-04 09:04:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有特殊字符的公司列表,例如YPF Sociedad Anónima 当我用保存的列表加载pickle时,我得到了YPF Sociedad An�nima。如何保存/加载我的列表/目录,以便它们保留特殊字符

tikrNamesDict = {"TLRY": "Tilray, Inc.", "YPFD": "YPF Sociedad Anónima (YPFD)", "ZNHH": "China Southern Airlines Company Limited"}

with open(fr'C:\Python38\Projects\tikr\tikrNamesDict.p', 'wb') as fp:
        pickle.dump(tikrNamesDict, fp, protocol=pickle.HIGHEST_PROTOCOL)    

with open(fr'C:\Python38\Projects\tikr\tikrNamesDict.p', 'rb') as fp:
    data = pickle.load(fp)

for i in data:

    print(data[i])

输出:

Tilray, Inc. 
YPF Sociedad An�nima
China Southern Airlines Company Limited

Tags: an列表datapickleincfpchina特殊字符
2条回答

你能详细说明你的代码吗? 以下示例显示了一个可能的无问题保存/加载例程:

with open("test", "wb") as f:
    pickle.dump(["YPF Sociedad Anónima"], f)
pickle.load(open("test", "rb")) # creates a list ["YPF Sociedad Anónima"]

编辑:

由于您的数据仍在我的计算机上工作,并且您使用的是Windows,因此我建议您改用Base64编码。 为此,请使用带有“base64”参数的编解码器模块

import codecs, pickle
o = {"TLRY": "Tilray, Inc.", "YPFD": "YPF Sociedad Anónima (YPFD)", "ZNHH": "China Southern Airlines Company Limited"}
with open("test", "wb") as f:
    b64_string = codecs.encode(pickle.dumps(o), "base64")
    f.write(b64_string)
pickle.loads(codecs.decode(open("test", "rb").read(), "base64"))

您可以执行your_string.decode('utf-8', 'ignore')将加载的字符串解码为utf-8

相关问题 更多 >

    热门问题