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

如何在Python中读取文本文件内的列表格式元素?

嘿,我来帮你搞定这个问题!你的文本文件里是一堆Python风格的列表,每个列表包含索引和一条文本内容,要读取这些元素其实挺简单的,我给你两种靠谱的实现方式:

方法一:使用ast.literal_eval(推荐)

这个方法是最稳妥的,因为你的文件内容本身就是合法的Python字面量,ast.literal_eval可以安全地把这些字符串解析成真实的列表对象,而且比直接用eval安全得多(不会执行恶意代码)。

具体步骤和代码如下:

import ast
import re

# 第一步:读取整个文件的内容
with open('你的文件名.txt', 'r', encoding='utf-8') as file:
    file_content = file.read()

# 第二步:把内容分割成单个的列表字符串
# 用正则匹配所有[...]格式的内容,处理换行和空格的问题
list_strings = re.findall(r'\[.*?\]', file_content, re.DOTALL)

# 第三步:逐个解析列表并提取你需要的元素
extracted_texts = []
for item_str in list_strings:
    try:
        # 把字符串解析成Python列表
        item_list = ast.literal_eval(item_str)
        # 提取列表里的第二个元素(也就是文本内容)
        extracted_texts.append(item_list[1])
    except Exception as e:
        print(f"解析出错啦:{item_str},错误信息:{e}")

# 现在你就可以用extracted_texts这个列表了,比如打印看看
for idx, text in enumerate(extracted_texts):
    print(f"第{idx+1}条内容:{text}")
方法二:正则表达式直接提取文本

如果你的文件格式非常固定(每个列表都是[数字, "文本内容"]的形式),也可以直接用正则表达式提取文本部分,不过这种方法对格式变化的容忍度较低,比如文本里有转义引号或者格式稍有变动就可能失效。

代码示例:

import re
import html

# 读取文件内容
with open('你的文件名.txt', 'r', encoding='utf-8') as file:
    file_content = file.read()

# 用正则匹配每个列表中的文本部分
# 正则会捕获双引号里的内容,re.DOTALL允许匹配换行
pattern = r'\[\d+, "(.*?)"\]'
matched_texts = re.findall(pattern, file_content, re.DOTALL)

# 处理文本里的HTML转义字符,比如"转成普通引号
processed_texts = [html.unescape(text) for text in matched_texts]

# 输出结果
for idx, text in enumerate(processed_texts):
    print(f"第{idx+1}条内容:{text}")

总结

优先推荐第一种方法,因为ast.literal_eval能正确处理各种复杂情况,比如文本里的换行、转义字符,甚至是嵌套的引号,稳定性拉满。如果你的文件格式绝对固定,第二种方法会更简洁,但通用性差一些。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:28:26