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

Python文件读取类型问题:列表存文件后读取变为字符串

解决读取文件时字符串转列表/元组的问题

你遇到的问题很典型——文件里存的是Python字面量形式的字符串,直接用split()拆分只会把结构拆得乱七八糟,因为它识别不了嵌套的括号、元组这些语法。这里给你一个靠谱的解决方案:

用ast.literal_eval()还原真实对象

Python的ast模块里的literal_eval()方法专门用来把字符串形式的Python字面量(列表、元组、字典、字符串等)转换成真实的Python对象,而且比直接用eval()安全得多(不会执行恶意代码)。

修改后的脚本代码

import ast
import pandas as cool  # 假设你之前用的cool是pandas的别名

def tabBinaire():
    with open("data", "r") as f:
        for line in f:
            # 先去掉行首尾的空白字符,再转成真实的列表对象
            defi = ast.literal_eval(line.strip())
            print(defi)  # 现在这是和原列表完全一致的对象,里面是元组
            # 处理成DataFrame并生成哑变量
            # 先把每个元组转成可迭代对象,再构造DataFrame
            df = cool.DataFrame([list(tup) for tup in defi])
            output = df.stack().str.get_dummies().sum(level=0)
            print(output)

为什么原来的split()不行?

你原来用line.split(",")会把所有逗号都当作分隔符,比如原内容里的(u'Dan', u'Alon', u'Carla',)会被拆成['(u\'Dan\'', " u'Alon'", " u'Carla'", ')']这种零散的片段,完全破坏了原来的列表/元组结构,自然没法和原列表一致。

而ast.literal_eval()会完整解析字符串里的Python语法结构,准确还原出原来的列表和里面的元组,这样后续的DataFrame操作就能正常运行了。

内容的提问来源于stack exchange,提问作者HugoV

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:58:33