1

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

从现在开始,我使用 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]

我该如何继续?

4

2 回答 2

1

您可以将Python 的切片符号+列上的运算符结合使用。例如,连接列表的前两个元素是通过以下方式完成的:

=>>> 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:]
于 2013-02-25T10:20:16.223 回答
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')
于 2013-02-25T10:56:55.987 回答