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

如何在Python中将文本文件中的列表字符串转为二维列表

二维列表写入文件后读取格式不符的解决方法

问题根源

你用str()将列表转为字符串写入文件,本质是把Python列表的字符串表示(带单引号)存成文本。读取时只是将这些字符串原样读回,无法还原成嵌套列表结构;同时,Python列表的单引号格式不符合JSON规范,若尝试用JSON解析会触发Expecting value: line 1 column 2 (char 1)语法错误。

解决方法

推荐用JSON(跨语言通用)或Pickle(Python专用)来序列化/反序列化列表,避免手动处理字符串格式。

方法1:使用JSON(推荐,文本格式可编辑)

写入文件

将整个二维列表一次性写入:

import json

fruits = [["banana", "apple"], ["durian", "dragon fruit"]]
with open("fruits.txt", "w", encoding="utf-8") as f:
    json.dump(fruits, f)

或按行写入每个子列表:

import json

fruits = [["banana", "apple"], ["durian", "dragon fruit"]]
with open("fruits.txt", "w", encoding="utf-8") as f:
    for sub_list in fruits:
        json.dump(sub_list, f)
        f.write("\n")

读取文件

对应一次性写入的读取方式:

import json

with open("fruits.txt", "r", encoding="utf-8") as f:
    fruits = json.load(f)
# 输出:[["banana", "apple"], ["durian", "dragon fruit"]]

对应按行写入的读取方式:

import json

fruits = []
with open("fruits.txt", "r", encoding="utf-8") as f:
    for line in f:
        sub_list = json.loads(line.strip())
        fruits.append(sub_list)
# 输出:[["banana", "apple"], ["durian", "dragon fruit"]]

方法2:使用Pickle(Python专用,二进制格式)

适合仅在Python环境中传输数据,无需跨语言兼容:

写入文件

import pickle

fruits = [["banana", "apple"], ["durian", "dragon fruit"]]
with open("fruits.pkl", "wb") as f:
    pickle.dump(fruits, f)

读取文件

import pickle

with open("fruits.pkl", "rb") as f:
    fruits = pickle.load(f)
# 输出:[["banana", "apple"], ["durian", "dragon fruit"]]

临时修复(不推荐)

如果必须用原文本格式读取,可以用ast.literal_eval()解析字符串为列表:

import ast

fruits = []
with open("fruits.txt", "r") as f:
    for line in f:
        sub_list = ast.literal_eval(line.strip())
        fruits.append(sub_list)

注意:仅当文本内容完全符合Python语法时可用,存在安全风险(若文本被恶意篡改可能执行代码),不推荐用于生产环境。

内容的提问来源于stack exchange,提问作者Zhi Qi Chew

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:27:23