【问题标题】:merge two text file without common column in python在python中合并两个没有公共列的文本文件
【发布时间】:2015-02-27 00:12:04
【问题描述】:

我有 2 个行数相同的文本文件,但我的文件之间没有公共列。第一个文件有 9 列,第二个文件有 8 列。它们都有 111557 行。 2 个文件中的行顺序是相同的,所以我只想简单地合并它们,这意味着我将拥有一个包含 17 列的文本文件。

这是第一个 .txt 文件的第一列(它们受制表符限制)

     chr1   HAVANA  gene    29554   31109   .   +   .

这是第二个 .txt 文件的第一行(它们受制表符限制)

     ENSG00000243485.2  ENSG00000243485.2   lincRNA NOVEL   MIR1302-11  lincRNA NOVEL   MIR1302-11

【问题讨论】:

  • 请从每个文件中发布一行,并在输出文件中发布相应的所需行。用什么分隔列?
  • 好吧,这太过分了。你试过用谷歌搜索什么吗?你有自己的代码吗?甚至一行打开一个文件?从文件中读取行?将一行写入文件?当你有这些时,我们可以谈谈。

标签: python file join


【解决方案1】:
import csv

with open('path/to/file1') as infile1, open('path/to/file2') as infile2, open('path/to/output', 'w') as outfile:
    writer = csv.writer(outfile, delimiter='\t')
    for row1,row2 in zip(csv.reader(infile1, delimiter='\t'), csv.reader(infile2, delimiter='\t')):
        writer.writerow(row1+row2)

【讨论】:

  • @ali:这正是我发表评论以澄清您的原始帖子的原因。请解决这个问题,否则我无法提供超准确的答案
  • @ali:我已经更新了我的答案,完全符合您的需要
【解决方案2】:

试试这样:

with open('file1') as f1, open('file2') as f2, open('outfile','w') as out:
    for x in f1:
        y = next(f2)
        out.write("{}\t{}".format(x.strip(),y))

如果您在上面遇到错误,请尝试这样:

f1 = open('file1') 
f2 = open('file2')
out = open('outfile','w')
for x in f1:
    y = next(f2)
    out.write(x.strip() + "\t" + y)

【讨论】:

  • 我喜欢它,但这仅适用于 OP 的文件以空格分隔的情况,这与我所做的假设相似。这个问题真的不是很清楚
  • @Hackaholic 我的文件是标签限制的
  • 给出这个错误:SyntaxError: invalid syntax and it is related to "," after f1
  • with open('fisrts.txt') as f1, open('eights.txt') as f2, open('outfile.txt','w') as out: ^ SyntaxError: invalid语法
  • @ali 查看下一个版本的解决方案
猜你喜欢
  • 2014-07-12
  • 1970-01-01
  • 1970-01-01
  • 2022-11-22
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2019-03-01
  • 1970-01-01
相关资源
最近更新 更多