2017-06-21 15 views
0

私は、このような入力を持って、タブ区切りtxtファイルに(4列に簡略化され、実際のデータは非常に巨大である):列内の値の行を繰り返しますか?

FACTOR→NAME→SURNAME→ADDRESS 
1→John→Smith→Chicago 
3→Betty→Crawford→New York 
2→Tom→Jonson→Chicago 

そして、私はこれを取得したい:つまり

FACTOR→NAME→SURNAME→ADDRESS 
1→John→Smith→Chicago 
3→Betty→Crawford→New York 
3→Betty→Crawford→New York 
3→Betty→Crawford→New York 
2→Tom→Jonson→Chicago 
2→Tom→Jonson→Chicago 

:IをFACTOR列の値に基づいて各行を繰り返す必要があります。この値には、number > 0しか指定できません。どうすればPythonでこれを行うことができますか?

+2

これはスタックオーバーフローの目的ではありません。これは、何をすべきかを伝えて働くプログラムを注文するものではありません。 いくつかの努力をしてみて、それを試みてください。つまったら、より具体的な質問をしてください。 – Erich

+0

あなたは正しいです。私はDB上でSQLを使ってこれを行う方法を知っていますが、私はPythonにはまったく新しく、行を印刷するためにループを繰り返すだけでした。それを掲示する価値があるとは思わなかった。私は将来そうするでしょう。しかし、私はどの方向に進むべきか、すなわちループ内のリストのインデックスを使うべきかを見ています。 – zwornik

+1

Pythonで作った試みがうまくいかなかったことを示し、 "これを取得したい"という意味を明確に定義する必要があります。これは正確に "これ"ですか? FWIW、あなたはループの中でリストのインデックスを使うことについての声明は実りあるものとは言えません。あなたが質問で言ったように、あなたが使う必要があるのは 'FACTOR'列の値だけです。 – martineau

答えて

0

あなたはこのためoutput.txtファイルを作成することができ、かつinput.txtの一環として、上記の行を考慮すると、あなたのような何かを行うことができます:ValueErrorを:サム・チャットが提供するスクリプトで

inp = open('input.txt', 'r') 
lines = inp.readlines() 
inp.close() 

out = open('output.txt', 'w') 
for line in lines: 
    factor = int(line.split('\t')[0]) #splits on tab and gets the leftmost value, converts it to int 
    out.write(line+'\n'*factor) #this writes the line desired number of times 
out.close() 
+1

それはうまくいかないし、評判制限を迂回することは、良い練習IMOではありません。彼らには理由があります。 – martineau

+0

@martineau私はお詫び申し上げます。私はその行を削除しました。ところで、あなたが「それはうまくいかない」と言ったときに具体的に何を意味したのですか? –

+0

問題が表示されない場合は、コードを実行してみてください。それを理解してから、ここに質問を投稿するように頼んでください。そうするためには、あまり評判は必要ありません。 – martineau

0

を私はこのエラーを得ました:基数10のint()の無効なリテラル: 'FACTOR' これは、列名FACTORもループ内で倍率として使用されていたためです。私はスクリプトにいくつかの変更を行なったし、私は私が必要なものを得た:ヒントについて

inp = open('input.txt', 'r') 
out = open('output.txt', 'w') 
header = inp.readline() 
lines = inp.readlines()[0:] 

out.write(header) 

for line in lines: 
    factor = int(line.split('\t')[0]) 
    out.write(line*factor) 

inp.close() 
out.close() 

ありがとう!

関連する問題