2016-08-31 9 views
1

結果がそれぞれの行に出力されるように、結果を書式設定しようとしています。たとえば、店舗番号で店舗を検索してJSONファイルから場所を取得していますが、印刷時に店舗番号と場所が別々の行に印刷されています。各行の印刷出力の書式設定は?

コードスニペット:(店舗35と96を検索しています)

for store, data in results.items(): 
    print('Store: {}'.format(store)) 
    if data: 
     for location in data: 
      print(location) 

電流出力:
ストア:35
{ '場所':アイオワ}
ストア:96
{ '場所':ミネソタ}

所望の出力(または類似した何か):
店:35 '場所':アイオワ
店:96、 '場所は':あなたの最初のprint文にend=''を追加ミネソタ

答えて

1

は、問題を修正する必要があります。終了文字が空文字列であることを指定すると、デフォルトの\n文字を上書きします(デフォルトでは、print文は改行文字で終わります)。

for store, data in results.items(): 
    print('Store: {}'.format(store), end='') 
    if data: 
     for location in data: 
      print(location) 

私たちは、あなたが場所をプリントアウトした後に印刷するための新しい行をしたいので、私たちは最初のprint文にend=''を追加します。

,で印刷物を分割する場合は、最初の印刷文に+ ','を追加するだけです。

あなたは、Python 3を使用している場合、これはあなたがPythonの2.Xを使用している場合、あなたのファイルの先頭に次の行を追加する必要があります右のバットに動作します:from __future__ import print_function

ここでは簡単なのですこの動作の例:

from __future__ import print_function 

l1 = ['hello1', 'hello2', 'hello3'] 
l2 = ['world1', 'world2', 'world3'] 

for i,j in zip(l1, l2): 
    print (i, end='') 
    print (j) 

Output: 

hello1world1 
hello2world2 
hello3world3 

我々は同じコードを取ったが、わずかにそれを変更し、ちょうどend=''を取り外した場合、これは何が起こるかです:

from __future__ import print_function 

l1 = ['hello1', 'hello2', 'hello3'] 
l2 = ['world1', 'world2', 'world3'] 

for i,j in zip(l1, l2): 
    print (i) 
    print (j) 

Output: 

hello1 
world1 
hello2 
world2 
hello3 
world3 

各行が改行文字で終わることがわかるように、各行に新しい行が表示されます。

+0

参考にする: '適切にその値が' false'を考慮した場合に対処するための最初のスニペットインチ – martineau

+0

詳細な応答をありがとう - それは素晴らしい動作します! –

+0

@MiaElla問題ありません!私があなたを助けることができたなら、チェックボタンを押すことによってこれを答えとしてマークすることを検討してください! – Harrison

0

私は変数にすべての出力を書き、最後に一度だけ変数を出力します。これにより、stdoutへのアクセスが1回だけで済むので、(メモリを増やしても)時間を節約することができます。コードは、(私の意見では)に従うことが容易である:

output = '' 
for store, data in results.items(): 
    output += 'Store: {}'.format(store) 
    if data: 
     for location in data: 
      output += location+'\n' 

# Only at the end you print your output 
print(output) 

あなたはまた、次のように(あなたはまだ標準出力に時間の半分にアクセスする)各反復の終わりに印刷することができます。

for store, data in results.items(): 
    output = 'Store: {}'.format(store) 
    if data: 
     for location in data: 
      output += location+'\n' 

    # Print only at the end of the loop 
    print(output) 

あなたは、各ストアのではなく、それぞれの「場所」のための新しい行したい場合:

output = '' 
for store, data in results.items(): 
    output += 'Store: {}'.format(store) 
    if data: 
     for location in data: 
      output += location 
     output += '\n' 

# Only at the end you print your output 
print(output) 

を、私はこのアプローチは、より柔軟なコードで読みやすく、より速くもあると思います。

希望あなたは `かのデータに` else`を追加する必要が