如何用Python自动化拆分含唯一ID的记事本文件?
自动化处理文本文件生成对应ID命名的新文件
完全可以用你掌握的Python文件IO知识实现这个自动化操作,不需要复杂的第三方库,核心逻辑就是读取原文件、分离头部与语句、循环生成新文件。
核心实现步骤
- 读取原始文本文件的所有内容
- 区分头部内容和每条带ID的语句
- 提取每条语句的唯一ID,将头部+对应语句写入以ID命名的新文件
示例代码(可根据实际文件格式调整)
# 读取原始文件,替换成你的源文件路径 with open('source_notes.txt', 'r', encoding='utf-8') as f: all_content_lines = f.readlines() # 分离头部和语句:这里假设头部是第一个带ID的行之前的内容 # 你需要根据自己的文件格式修改判断逻辑,比如ID行的特征(比如开头是"ID:"、数字等) header_lines = [] statement_blocks = [] current_statement = [] is_header_section = True for line in all_content_lines: # 示例判断:如果行首包含"ID:",则认为是新语句的开始 if line.strip().startswith("ID:"): # 如果之前有未保存的语句(针对跨多行的语句),先存入列表 if current_statement: statement_blocks.append(''.join(current_statement)) current_statement = [] is_header_section = False current_statement.append(line) else: if is_header_section: header_lines.append(line) else: # 如果语句是多行内容,就追加到当前语句块 current_statement.append(line) # 处理最后一条语句 if current_statement: statement_blocks.append(''.join(current_statement)) # 把头部内容转为字符串 header_content = ''.join(header_lines) # 循环生成每个新文件 for stmt in statement_blocks: # 提取ID:这里假设ID格式是"ID:12345",提取冒号后的数字部分 # 请根据你的实际ID格式修改提取逻辑 id_start = stmt.find("ID:") + 3 id_end = stmt.find(" ", id_start) # 假设ID后跟着空格 if id_end == -1: id_end = stmt.find("\n", id_start) id_str = stmt[id_start:id_end].strip() # 处理文件名非法字符,避免创建失败 safe_id = id_str.replace("/", "_").replace("\\", "_").replace(":", "_").replace("?", "_") new_file_name = f"{safe_id}.txt" # 写入头部+当前语句到新文件 with open(new_file_name, 'w', encoding='utf-8') as new_file: new_file.write(header_content) new_file.write(stmt)
需要根据你的文件调整的关键点
- 头部与语句的分隔逻辑:如果你的头部有明确的结束标记(比如一行全是
---),可以直接用这个标记来分割头部和语句部分;如果语句都是单行,逻辑可以更简单。 - ID提取逻辑:根据你文件中ID的实际格式调整(比如ID是行首的数字、或者特定标签后的内容)。
- 多行语句处理:如果每条语句可能跨多行,要确保完整捕获整个语句块再存入列表。
你的入门Python知识完全足够完成这个任务,重点是理清文件的结构,调整代码中的判断和提取逻辑即可。
内容的提问来源于stack exchange,提问作者paprikadoor
相关产品推荐
相关产品推荐

