我有一个包含两列的数据文件,我想把它放入一个单列。
从现在起我已经拆分了这些列 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]
我该如何继续?
答案 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')