将两列合二为一

时间:2013-02-25 10:17:55

标签: python

我有一个包含两列的数据文件,我想把它放入一个单列。

从现在起我已经拆分了这些列 open(“test.txt”)作为input_data:

for line in input_data:  # This keeps reading the file
    li=line.strip()
    #print repr(line) #Each line is being returned as a string
    column = line.split()
    # print column
    nb1=column[0]
    nb2=column[1]

我该如何继续?

2 个答案:

答案 0 :(得分:1)

您可以在列上使用Python's slicing notation+运算符相结合。例如,加入列表的前两个元素是通过:

完成的
=>>> l=["a","b","c","d"]
>>> a=[l[0]+l[1]]+l[2:]
>>> a
['ab', 'c', 'd']

a=[l[0]+l[1]]+l[2:]将前两个元素(+)与其余列([l[0]+l[1]])连接起来(l[2:]。)

在您的代码中,它可能是:

columns = [column[0]+ column[1]]+ column[2:]

答案 1 :(得分:0)

我将nb1和nb2更改为列表,并将列值附加到每个添加'\ n',以便将它们写在新行上。输出文件有一个列,第1列的值位于第2列的值之上。这种方法大部分都适用,但如果处理的是非常大的文件,则此方法会占用大量内存。如果这是一个问题,您可以在两次通过中形成输出文件,首先将第一列写入文件,然后写入第二列。

nb1 = []
nb2 = []
with open('input.txt','r') as input_data:
  for line in input_data:
    column = line.strip().split()
    nb1.append(column[0]+'\n')
    if len(column) == 2:
      nb2.append(column[1]+'\n')
with open('output.txt','w') as f:
  f.writelines(nb1)
  f.writelines(nb2)

如果你想在第一个元素下的每一行中使用第二个元素,你可以使用这个更简单的内存友好语法。

with open('input.txt','r') as input_data:
  with open('output.txt','w') as f:
    for line in input_data:
      column = line.strip().split()
      f.write(column[0]+'\n')
      f.write(column[1]+'\n')