如何在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
相关产品推荐
相关产品推荐

