Python如何将TXT中字典格式字符串转换为可操作字典?
问题:将文本文件中字典格式的字符串转为Python字典
你通过以下代码将用户字典数据写入.txt文件:
# 数据以字典形式存储 data = { "DNI": dni, "Nombre": name, "Apellido": surname, "Usuario": username, "Contraseña": password} with open(dbUsers, "a+") as db: db.write("\n" + str(data)) # 最后输出成功提示并关闭文件 db.close() print("El usuario y sus datos se han introducido correctamente.")
但用下面的代码读取时,每行内容都是字符串格式,没法通过键直接获取对应值:
with open(dbUsers, "r") as db: for line in db:
想知道怎么把这些字典格式的字符串转换成Python可直接操作的字典?
解决方案
方法1:用ast.literal_eval安全转换
这是处理Python字面量字符串最安全的方式,比直接用eval()靠谱——eval()会执行字符串里的任意代码,存在安全风险,而ast.literal_eval()只会解析合法的Python基础数据结构(字典、列表、字符串等)。
修改读取代码即可:
import ast with open(dbUsers, "r") as db: for line in db: # 去除换行符和首尾空格 cleaned_line = line.strip() if cleaned_line: # 跳过空行 # 把字符串转成字典 user_dict = ast.literal_eval(cleaned_line) # 现在可以正常用键取值了 print(user_dict["DNI"]) print(user_dict["Nombre"])
方法2:改用JSON格式存储(更规范的长期方案)
用str(data)写入的字符串是Python专属的repr格式,并非通用序列化标准,容易出现兼容问题。更推荐用JSON格式存储,读写更稳定,跨语言也能识别。
修改写入代码:
import json data = { "DNI": dni, "Nombre": name, "Apellido": surname, "Usuario": username, "Contraseña": password} with open(dbUsers, "a+") as db: # 将字典转为JSON字符串写入,每行一条数据 json.dump(data, db, ensure_ascii=False) # ensure_ascii=False保留特殊字符 db.write("\n") # 换行分隔 print("El usuario y sus datos se han introducido correctamente.")
修改读取代码:
import json with open(dbUsers, "r") as db: for line in db: cleaned_line = line.strip() if cleaned_line: user_dict = json.loads(cleaned_line) # 正常使用字典 print(user_dict["Apellido"])
内容的提问来源于stack exchange,提问作者Jorge Fernández
相关产品推荐
相关产品推荐

