如何合并两个文本文件的指定列?现有Python代码报错求助
解决文本文件列合并与完整合并问题
先梳理下你代码里的几个关键问题:
- 没有读取第二个文件的内容就直接遍历文件对象
second,这会导致读取逻辑混乱 - 每次循环都用
w模式打开输出文件,会直接覆盖之前写入的内容 "%s %s\n" .format(output)的语法错误,format是字符串方法,不能加空格,而且你传入的是列表而非单个元素- 列表推导式的逻辑没法实现你要的"第一个文件元素对应第二个文件指定位置元素"的需求
一、实现指定列合并(得到你期望的结果)
根据你的输入和期望输出,第一个文件的每行(这里是单行)的每个元素,需要对应第二个文件单行中第2、4、6、8个元素(Python索引从0开始,也就是取索引1、3、5、7的元素)。可以这样实现:
# 读取第一个文件的内容,拆分得到目标元素列表 with open('1', 'r') as first_file: data1 = first_file.readline().strip().split() # 结果:['1', '2', '3', '4'] # 读取第二个文件的内容,拆分后提取需要的元素 with open('2', 'r') as second_file: data2 = second_file.readline().strip().split() # 结果:['1', '3', '2', '5', '5', '7', '7', '3'] target_data2 = data2[1::2] # 从索引1开始,步长为2,提取出['3','5','7','3'] # 将对应元素配对写入新文件 with open('1+2', 'w') as output_file: for item1, item2 in zip(data1, target_data2): output_file.write(f"{item1} {item2}\n")
运行这段代码后,输出文件1+2的内容就是你想要的:
1 3 2 5 3 7 4 3
二、完整合并两个文本文件
如果需要把两个文件的内容完整合并,分两种常见场景:
场景1:将第二个文件内容追加到第一个文件内容之后
with open('1', 'r') as f1, open('2', 'r') as f2, open('full_merge.txt', 'w') as output: # 先写入第一个文件的全部内容 output.write(f1.read()) # 再写入第二个文件的全部内容 output.write(f2.read())
场景2:按行对应合并(适合两个文件行数相同的情况)
比如把两个文件的对应行拼接成一行,示例代码如下:
with open('1', 'r') as f1, open('2', 'r') as f2, open('line_merge.txt', 'w') as output: # 同时遍历两个文件的每一行 for line1, line2 in zip(f1, f2): # 去除每行末尾的换行符后拼接 merged_line = f"{line1.strip()} {line2.strip()}\n" output.write(merged_line)
内容的提问来源于stack exchange,提问作者Zahra
相关产品推荐
相关产品推荐

