You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:10:23