鱼C论坛

 找回密码
 立即注册
查看: 1405|回复: 5

[已解决]如何把txt文件里面的内容快速转化为字典形式?

[复制链接]
发表于 2023-12-28 20:06:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
比如有这样一个字典
AA = {1:'ert','123':[0,3],6:45}

把它写入一个txt文本文件,
f = open('123.txt',w)
f.write(f'{AA}')
f.close()

如何在读入这个txt文件后,快速的把里面的字符串重新转化为字典形式?
最佳答案
2023-12-28 20:07:10
要将txt文件中的内容快速转化为字典形式,可以使用eval()函数。

首先,在写入txt文件时,不要使用f.write()方法直接写入字典的字符串形式,而是应该将字典通过json库转化为字符串形式后再写入,这样更安全且方便后续读取。
import jsonAA = {1: 'ert', '123': 6, 45: 'abc'}with open('123.txt', 'w') as f:    json.dump(AA, f)
此时,在txt文件中会得到以下内容:
{"1": "ert", "123": 6, "45": "abc"}
然后,我们可以使用eval()函数将字符串快速转化为字典。但是,请注意,由于eval()函数会执行字符串中的任意代码,因此在使用时需要确保字符串的安全性,以免造成安全风险。
import astwith open('123.txt', 'r') as f:    content = f.read()    AA = ast.literal_eval(content)print(AA)  # 输出:{1: 'ert', '123': 6, 45: 'abc'}
在上述代码中,我们使用了ast模块的literal_eval()函数,它会将字符串转化为其对应的Python表达式,而不会执行任意代码,从而提高了安全性。

总结一下:将字典写入txt文件时,可使用json库的dump()函数进行序列化;读取txt文件并将内容转化为字典时,可使用ast模块的literal_eval()函数进行安全的字符串转换操作。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-28 20:07:10 | 显示全部楼层    本楼为最佳答案   
要将txt文件中的内容快速转化为字典形式,可以使用eval()函数。

首先,在写入txt文件时,不要使用f.write()方法直接写入字典的字符串形式,而是应该将字典通过json库转化为字符串形式后再写入,这样更安全且方便后续读取。
import jsonAA = {1: 'ert', '123': 6, 45: 'abc'}with open('123.txt', 'w') as f:    json.dump(AA, f)
此时,在txt文件中会得到以下内容:
{"1": "ert", "123": 6, "45": "abc"}
然后,我们可以使用eval()函数将字符串快速转化为字典。但是,请注意,由于eval()函数会执行字符串中的任意代码,因此在使用时需要确保字符串的安全性,以免造成安全风险。
import astwith open('123.txt', 'r') as f:    content = f.read()    AA = ast.literal_eval(content)print(AA)  # 输出:{1: 'ert', '123': 6, 45: 'abc'}
在上述代码中,我们使用了ast模块的literal_eval()函数,它会将字符串转化为其对应的Python表达式,而不会执行任意代码,从而提高了安全性。

总结一下:将字典写入txt文件时,可使用json库的dump()函数进行序列化;读取txt文件并将内容转化为字典时,可使用ast模块的literal_eval()函数进行安全的字符串转换操作。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-28 21:13:55 | 显示全部楼层
FishC 发表于 2023-12-28 20:07
要将txt文件中的内容快速转化为字典形式,可以使用eval()函数。

首先,在写入txt文件时,不要使用f.write( ...

如果代码中出现了汉字,存储到txt文件后就变成好像含有utf8或者utf16的字节,这个问题要如何解决?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-28 21:14:07 | 显示全部楼层
子飞鱼 发表于 2023-12-28 21:13
如果代码中出现了汉字,存储到txt文件后就变成好像含 ...

如果代码中含有汉字,存储到txt文件后可能会出现编码问题,需要进行相应的编码和解码操作来解决这个问题。在写入txt文件时,可以指定文件的编码方式为utf-8,这样可以保证汉字被正确地存储在文件中。下面是一个示例代码:import jsonAA = {1: '你好', 2: '世界'}with open('123.txt', 'w', encoding='utf-8') as f:    json.dump(AA, f, ensure_ascii=False)在上述代码中,我们通过指定'utf-8'作为编码方式,ensure_ascii=False来确保汉字正常存储在txt文件中。然后,当我们读取txt文件时,也需要使用相同的编码方式进行解码操作。import jsonAA = {}with open('123.txt', 'r', encoding='utf-8') as f:    content = f.read()    AA = json.loads(content)print(AA)  # 输出:{1: '你好', 2: '世界'}在上述代码中,我们同样指定了'utf-8'作为编码方式,并使用json.loads()函数对txt文件的内容进行解码,得到原始的字典内容。通过以上方式,可以解决在代码中含有汉字时存储到txt文件后出现的编码问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-28 21:15:28 | 显示全部楼层
FishC 发表于 2023-12-28 21:14
如果代码中含有汉字,存储到txt文件后可能会出现编码问题,需要进行相应的编码和解码操作来解决这个问题 ...

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-28 21:15:38 | 显示全部楼层

不客气!如果还有其他问题,欢迎随时提问。祝您编程学习顺利!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 15:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表