如何将大文件中相同内容行替换为对应相同ID,附现有问题代码
原代码问题点
- 嵌套循环+文件指针操作逻辑混乱,会出现内容覆盖、匹配失效问题
- 未提前建立文本与ID的映射关系,重复出现的文本会被分配错误的新ID
- 没有统一处理行首尾空白,会导致内容匹配不一致
修改后实现代码
# 读取源文件所有行,去除首尾空白预处理 with open("filein.txt", "r") as f: raw_lines = [line.strip() for line in f if line.strip()] # 构建文本到唯一ID的映射关系,首次出现按顺序分配ID text_id_map = {} id_counter = 1 for line_content in raw_lines: if line_content not in text_id_map: text_id_map[line_content] = str(id_counter) id_counter += 1 # 替换所有行内容后写入目标文件 output_content = "\n".join([text_id_map[content] for content in raw_lines]) with open("filein2.txt", "w") as f: f.write(output_content)
运行结果
执行后filein2.txt的内容完全符合预期:
1 2 3 4 5 1 1 1 2
内容的提问来源于stack exchange,提问作者barbosa
相关产品推荐
相关产品推荐

