把两列放到一个
我有一个数据文件有两列,我想把它放到一个单列中。把两列放到一个
既然我现在已经分裂列 开放( “的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]
我如何继续?
您可以在列上使用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:]
实际上我需要(对不起,没有说清楚)是把b放在一个(在你的例子中),这样做一个列有两个元素a,b – user2106755 2013-02-25 10:45:07
我改变NB1和NB2到列表和附加列值到每个加入“\ n”所以他们都写上了一个新行。输出文件具有一列,其中第2列的值位于第1列的值的顶部。此方法大部分适用,但如果处理的文件非常大,则此方法使用大量内存。如果这是一个问题,您可以通过两次写入输出文件,先写入第一列,然后写入第二列。
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')
非常感谢你的回答。但是,如果在列a中,我有例如10个数字,并且我想在这10个数字之后添加列b的数字(例如5个数字)以便具有15个数字的单个列c? – user2106755 2013-02-25 13:01:08
我更新了我的答案以涵盖此内容。只要检查列的大小,如果它有两个元素,然后将第二个元素附加到nb2。 – Octipi 2013-02-25 13:08:11
非常感谢 – user2106755 2013-02-25 15:51:41
你想在另一列的顶部有一列吗?你想让它们编织在一起,每行的第二个元素直接在第一个元素下面吗? – Octipi 2013-02-25 10:24:58
我有两列,我想在第一列的最后一个数字之后添加第二列。所以我需要所有的数字在一个单列中。例如,如果我有两列,每列有十个数字,则需要一个包含二十个数字的列作为输出 – user2106755 2013-02-25 10:39:08
请在您的答案中提供一个清晰的输入示例和预期输出。 – 2013-02-25 10:48:30