如何用Python合并两个文本文件的列并按指定格式输出?
解决方案
我来帮你搞定这个问题!你之前尝试用字典和列表的思路完全没问题,大概率是在记录顺序或者字段处理细节上出了小疏漏。下面是适配你Python 3.0和PyCharm环境的完整实现方案:
步骤思路
- 分别读取两个文件的内容,把它们解析成以ID为键的字典——这样能快速匹配对应的姓名和年龄。
- 由于Python 3.0的字典不保存插入顺序,我们需要单独记录File1里ID的出现顺序,保证输出和你期望的顺序一致。
- 最后按照记录的ID顺序,把每个条目对应的「ID + 姓,名 + 年龄」拼接起来,输出成指定格式。
完整代码
# 处理File1.txt:提取ID、整理姓名格式并记录ID顺序 id_sequence = [] name_dict = {} with open('File1.txt', 'r') as file1: # 读取内容并按空格分割成单个记录 records = file1.read().strip().split() for rec in records: # 按|分割字段,拆分出ID、名、姓 user_id, first_name, last_name = rec.split('|') id_sequence.append(user_id) # 按「姓,名」的格式存储 name_dict[user_id] = f"{last_name},{first_name}" # 处理File2.txt:提取ID和对应年龄 age_dict = {} with open('File2.txt', 'r') as file2: records = file2.read().strip().split() for rec in records: user_id, age = rec.split('|') age_dict[user_id] = age # 生成最终输出内容 output_parts = [] for user_id in id_sequence: output_parts.append(user_id) output_parts.append(name_dict[user_id]) output_parts.append(age_dict[user_id]) # 用空格拼接所有片段,得到期望格式 final_result = ' '.join(output_parts) print(final_result)
运行效果
执行代码后会输出:
2 Tucker,Stacey 26 4 Mirza,Simi 31 9 Singh,Naved 30 6 Patel,Ram 17 7 Pruth,Joe 35
完全匹配你想要的输出格式!
关键细节说明
- 为什么要单独记录
id_sequence?因为Python 3.0的字典不保留插入顺序,如果直接遍历字典,输出顺序会混乱,所以必须从File1里把ID的原始顺序存下来。 - 姓名格式特意处理成
last_name,first_name,刚好对应你需要的「姓在前、名在后」的格式,别搞反哦。 - 读取文件时用
strip()是为了去掉文件首尾的换行或空白字符,避免分割出无效的空字符串。
内容的提问来源于stack exchange,提问作者jayk
相关产品推荐
相关产品推荐

