Python如何读取txt文件定位指定数组并为每个元素追加字符串
Python实现TXT文件指定列表元素批量追加后缀
实现逻辑
- 读取目标TXT文件全量内容
- 通过正则匹配定位到你指定名称的Python格式列表行
- 安全解析列表内容,遍历每个元素追加指定后缀
- 替换原有列表行后写回原文件即可
完整可运行代码
import re import ast # 自定义参数配置 file_path = "你的目标文件路径.txt" target_array_name = "names" # 你要找的数组名称 append_suffix = "-familyname" # 要追加的字符串 # 读取文件内容 with open(file_path, "r", encoding="utf-8") as f: content = f.readlines() # 遍历每行匹配目标数组 pattern = re.compile(rf'^\s*{target_array_name}\s*=\s*(\[.*\])\s*$') for i, line in enumerate(content): match_res = pattern.match(line) if match_res: # 安全解析列表内容 original_list = ast.literal_eval(match_res.group(1)) # 批量追加后缀生成新列表 new_list = [f"{elem}{append_suffix}" for elem in original_list] # 替换原行内容,保持格式统一 content[i] = f'{target_array_name} = {new_list}\n' break # 写回文件 with open(file_path, "w", encoding="utf-8") as f: f.writelines(content)
特殊场景适配
- 如果你的数组是跨多行书写的,把逻辑调整为如下即可支持:
import re import ast file_path = "你的目标文件路径.txt" target_array_name = "names" append_suffix = "-familyname" # 先读取全量文本而非按行读取 with open(file_path, "r", encoding="utf-8") as f: full_content = f.read() pattern = re.compile(rf'({target_array_name}\s*=\s*\[.*?\])', re.DOTALL) match_res = pattern.search(full_content) if match_res: full_line = match_res.group(1) original_list_str = full_line.split("=", 1)[1].strip() original_list = ast.literal_eval(original_list_str) new_list = [f"{elem}{append_suffix}" for elem in original_list] full_content = full_content.replace(full_line, f'{target_array_name} = {new_list}') with open(file_path, "w", encoding="utf-8") as f: f.write(full_content)
- 代码默认使用
ast.literal_eval解析列表,相比eval不会执行恶意代码,安全性更高 - 如果你的文件是非UTF-8编码,修改
open方法的encoding参数为对应编码即可,比如encoding="gbk"
内容的提问来源于stack exchange,提问作者Casmaz
相关产品推荐
相关产品推荐

