2011-10-19 19 views
-1

私は検索が、これは一例です。..助けることは何も見つからなかっました:Pythonで1つのテキストファイルの行を結合する方法は?

List.txt 
    a 
    b 
    c 
    d 

私はこのような出力を得ることができるようにしたい:

Output.txt 
    ab 
    ac 
    ad 
    ba 
    bc 
    bd 
    ca 
    cb 
    cd 
    etc... 
+0

あなたは何をしたいのか正確にアルゴリズム/リピート形式を提供できますか? – chown

+1

あなたが試したことを私たちに見せてくれれば、より多くの助けを得ることができます。だから、あなたはどこでハングアップしているのかをよりよく理解することができます。 –

+3

これは宿題の問題ですか?そうであれば、そのようにタグ付けする必要があります。 – AlG

答えて

2

非常に簡単。 ..

from itertools import permutations 

with open('List.txt') as f:  
    letters = (l.strip() for l in f if l.strip())  
    for p in permutations(letters, 2): 
     print ''.join(p) 

出力:

ab 
ac 
ad 
ba 
bc 
bd 
ca 
cb 
cd 
da 
db 
dc 

いくつかの注意:

with文では、あなたがそれを完了したら、ファイルを閉じることが保証されます。

lettersは多くの場合(ただしこれではないが)、ファイル全体を一度に読む必要がないジェネレータ式です。

l.strip()の使用は、入力時に偶然の空白行をうまく処理するためのものです。

itertools.permutationsは正しくありません。ab ==と考えられ、出力として後者は含まれません。

ハッピーpythoning :)

-1

あなたが最初に読むことができますファイルを配列に挿入します:

lines=[] 
for line in file: 
    lines.append(line) 

そして、それを繰り返して、目的の出力を得ます。

for line1 in lines: 
    for line2 in lines: 
    print line1+line2 

を入力するか、代わりにファイルに出力してください。 OUTPUT.TXTというファイルに

+0

これは宿題ではなく、ただの趣味で、私は本当に新しいです。 –

0
f = open("List.txt") 
lines = f.read().splitlines() 
lines_new = [] 
for line in lines: 
    for line2 in lines: 
     if not line == line2: 
      lines_new.append("%s%s" % (line, line2)) 

print lines_new # ['ab', 'ac', 'ad', 'ba', 'bc', 'bd', 'ca', 'cb', 'cd', 'da', 'db', 'dc'] 
open("Output.txt", "w").write("\n".join(lines_new)) 

結果:

ab 
ac 
ad 
ba 
bc 
bd 
ca 
cb 
cd 
da 
db 
dc 
0

itertoolsモジュールは、このような問題を支援するためcombinatoricの機能があります。

>>> from itertools import combinations, permutations, product 
>>> s = open('list.txt').read().splitlines() 
>>> for t in permutations(s, 2): 
     print ''.join(t) 
+1

この場合、 'itertools.permutations'が必要です。' map( '' join、permutations( 'abcd'、2 )) '' vs 'map( ''。join、combine( 'abcd'、2))'を実行します。 –

関連する問題