2016-12-19 20 views
1

で文字列の書式を設定することができますが、私はこれらの文字列を別の文字列をフォーマットしたいが、私はフォーマットがそうであれば要素ということにしたいデータどのように私は、文字列

data= ['Mom','Dad',1,'Dog','World']

のリストを持っていると仮定しますdataの文字列は引用符で囲む必要があります。私はフローコントロールを使用することができますが、代わりに文字列の書式設定を使用します。

例えば、所望の出力はそれをフォーマットする方法はあり

You are my 'Mom' 
You are my 'Dad' 
You are my 1 #Notice that the 1 is an int and is not surrounded by quotes 
You are my 'Dog' 
You are my 'World' 

のようなものでしょうか?

+0

を知っていますか?どのデータ型が値であるかをチェックする方法を知っていますか? – csmckelvey

+0

@takendarkkはい、はいですが、フロー制御は私がしたいことではありません。私はフォーマットでそれを達成することができれば私は好奇心です –

答えて

3

あなたは!rフォーマット変換指定子を使用することができます。

>>> data= ['Mom','Dad',1,'Dog','World'] 
>>> for item in data: 
...  print('you are my {!r}'.format(item)) 
... 
you are my 'Mom' 
you are my 'Dad' 
you are my 1 
you are my 'Dog' 
you are my 'World' 

これは(デフォルト)__repr__を使用してではなく、__str__フォーマットします。 str.__repr__には引用符が追加されているので、期待通りに動作します。

+0

華麗な、ありがとう。 –

0

問題だけ(本当に@mgilsonsの単なるバリエーションアプローチです)の私の以前の誤解を補うために別の方法:

fmt = "You are my {!r}" 
print(*map(fmt.format, data), sep='\n') 

指名手配結果を出力します。

+0

私の質問では、データが文字列の場合は、引用符を持つ必要があります指定します。 –

+0

非常に恥ずかしい:-) –

0

ものの、より詳細な、あなたはデータを反復処理する方法を簡単な文が動作する必要がある場合

data= ['Mom','Dad',1,'Dog','World'] 

for d in data: 
    print("You are my {}".format("'{}'".format(d) if isinstance(d, str) else d)) 

出力

You are my 'Mom' 
You are my 'Dad' 
You are my 1 
You are my 'Dog' 
You are my 'World' 
+0

私はこれも考えましたが、冗長さのためにif-else文を避けたかったのです。ありがとう –

関連する問題