2012-03-28 6 views
4

変数を展開する必要がある大きなマルチライン文字列を含む部分を含むPythonスクリプトを作成しています。私は、Python 2.6やPython 3でそれを次のようにやってに慣れている:Python:変数付きのマルチライン文字列をフォーマットする

message = """ 
      Hello, {foo} 
      Sincerely, {bar} 
      """ 
print (message.format(foo = "John", bar = "Doe")) 

しかし、職場でのサーバは、文字列をサポートしていないのPython(2.3.4)の古いバージョンを実行しています。フォーマット。古いPythonバージョンでこれを行う方法は何ですか?あなたは%演算子を使ってそれを行うことができますか?私はこれを試してみましたが、動作していないようでした:

message = """ 
      Hello, %(foo) 
      Sincerely, %(bar) 
      """ % {'foo': 'John', 'bar': "Doe"} 

私は複数行の文字列を使用せずに、単に行うことができますが、私はフォーマットする必要があり、メッセージは、多くの変数を持つ非常に大きいです。 Python 2.3.4でこれを行う簡単な方法はありますか?あなたがタイプミスを持っている(それでもPythonの初心者、これはばかな質問であればとても残念。)

答えて

13

message = """ 
      Hello, %(foo)s 
      Sincerely, %(bar)s 
      """ % {'foo': 'John', 'bar': "Doe"} 

注意一般的なフォーマットを作る最後にs"%(keyname)s" % {"keyname": "value"}

+1

Gotcha、あなたとMattのおかげです。それが私が見逃していたものです、今は素晴らしい作品です。 – Nate

+0

変数を連結するのはどうですか? –

+0

@AllDani:あなたが何を求めているのか分かりません。あなたの質問は、 "どのように私は2つの変数を含む文字列を書式設定するのですか?' ''Hello%(foo)s%(bar)s'%{'foo' : "x"、 "bar": 'y'} ''(または、新しい '' str.format''アプローチを使うことができます。 。) –

0

message = """ 
      Hello, %(foo) 
      Sincerely, %(bar) 
      """ % {'foo': 'John", 'bar': "Doe"} 
         ^

は、二重引用符と単一引用符を交換し、それがうまく実行する必要があります。

+0

書式設定の指定子もありません。 – MattH

+0

おっと、ありがとう。私はそれをコンピュータに入力しただけで、間違った投稿をしました。私はそれを編集させてください。 – Nate

3

試してみてください。この

あなたが言いたい
message = """ 
      Hello, %(foo)s 
      Sincerely, %(bar)s 
      """ % {'foo': "John", 'bar': "Doe"} 
2

辞書ベースの文字列整形

message = """ 
      Hello, %(foo)s 
      Sincerely, %(bar)s 
      """ % { "foo":"john","bar":"doe"} 
関連する問題