私は検索が、これは一例です。..助けることは何も見つからなかっました:Pythonで1つのテキストファイルの行を結合する方法は?
List.txt
a
b
c
d
私はこのような出力を得ることができるようにしたい:
Output.txt
ab
ac
ad
ba
bc
bd
ca
cb
cd
etc...
私は検索が、これは一例です。..助けることは何も見つからなかっました:Pythonで1つのテキストファイルの行を結合する方法は?
List.txt
a
b
c
d
私はこのような出力を得ることができるようにしたい:
Output.txt
ab
ac
ad
ba
bc
bd
ca
cb
cd
etc...
非常に簡単。 ..
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 :)
あなたが最初に読むことができますファイルを配列に挿入します:
lines=[]
for line in file:
lines.append(line)
そして、それを繰り返して、目的の出力を得ます。
for line1 in lines:
for line2 in lines:
print line1+line2
を入力するか、代わりにファイルに出力してください。 OUTPUT.TXTというファイルに
これは宿題ではなく、ただの趣味で、私は本当に新しいです。 –
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
itertoolsモジュールは、このような問題を支援するためcombinatoricの機能があります。
>>> from itertools import combinations, permutations, product
>>> s = open('list.txt').read().splitlines()
>>> for t in permutations(s, 2):
print ''.join(t)
この場合、 'itertools.permutations'が必要です。' map( '' join、permutations( 'abcd'、2 )) '' vs 'map( ''。join、combine( 'abcd'、2))'を実行します。 –
あなたは何をしたいのか正確にアルゴリズム/リピート形式を提供できますか? – chown
あなたが試したことを私たちに見せてくれれば、より多くの助けを得ることができます。だから、あなたはどこでハングアップしているのかをよりよく理解することができます。 –
これは宿題の問題ですか?そうであれば、そのようにタグ付けする必要があります。 – AlG