1

2 つの列を持つデータ ファイルがあり、1 つの列に入れたいと考えています。

今から、input_data として open("test.txt") を使用して列を分割しました。

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 のスライス表記+を列の演算子と組み合わせて使用​​できます。たとえば、リストの最初の 2 つの要素を結合するには、次のようにします。

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

a=[l[0]+l[1]]+l[2:]+最初の 2 つの要素 ( [l[0]+l[1]]) を残りの列 ( ) と結合 ( ) しますl[2:]

あなたのコードでは、おそらく次のようになります。

columns = [column[0]+ column[1]]+ column[2:]
于 2013-02-25T10:20:16.223 に答える
0

nb1とnb2をリストに変更し、各追加'\ n'に列の値を追加して、新しい行に書き込まれるようにしました。出力ファイルには、列2の値の上に列1の値が含まれる単一の列があります。このアプローチはほとんどの場合うまく機能しますが、非常に大きなファイルを処理する場合、この方法は大量のメモリを使用します。それが問題である場合は、最初に最初の列をファイルに書き込み、次に2番目の列を書き込む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)

最初の要素の下の各行に2番目の要素が必要な場合は、このより単純でメモリに優しい構文を使用できます。

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 に答える