2012-07-19 10 views
84

はそう、あなたがエラーを取得しないためにはPythonで文字列と整数を連結Pythonで

print s+str(i) 

を書くあなたは をエラー与える

s = "string" 
i = 0 
print s+i 

を持っていると言います。

これは、intと文字列の連結を処理するのに非常に不器用な方法だと思います。 Javaの場合でも、この種の並べ替えを行うためにStringに明示的にキャストする必要はありません。 連結。 Pythonで明示的にキャストすることなく、この種の連結を行うより良い方法はありますか?新しいスタイルの.format()法(.format()が提供するデフォルト値を持つ)を使用して書式設定

+7

Pythonは強い型付き(https://en.wikipedia.org/wiki/Strong_typing)言語(:)もっと理解する上でGoogleに何か)であるからです。 – mouad

+3

それはあいまいさにつながります。 「1」+「1」、「2」、「11」の結果はどうなり、なぜですか? – Buddy

+1

バディ私はあなたが何を考えているのかは分かりませんが、ただ引き受けてはいけません。私の問題は、2つの異なるオブジェクトタイプを連結することでした。私は解決策を見つけました。私はあなたがPythonでどのくらいプログラム化しているのかわかりませんが、2つの文字列を連結して、それらのうちの1つがNone型のときにエラーを得ることを試みたことがありますか?あなたは明示的なチェックを行うことができますが、それはちょっとしたコードです。この種のことは、エラーを記録する必要がある場合に必要です。 – specialscope

答えて

104

現代の文字列フォーマット:

"{} and {}".format("string", 1) 
+2

ありがとう、この良い方法です。 – specialscope

+0

ちょうど後世のために、物事は過去に変更されており、今後変更される可能性がある:これは "現代"のバージョンですか? – jvriesem

23

文字列、:

'{}{}'.format(s, i) 

歳以上が、 "まだ周りに貼り付ける" を、% -formatting:

'%s%d' %(s, i) 

上記の両方の例では、2つの項目が連結されている間にはないのスペースがあります。スペースが必要な場合は、単純にフォーマット文字列に追加することができます。

これらの項目を連結する方法についてのコントロールと柔軟性の多くformat specifications see thisの詳細についてなど、それらの間の空間を提供しています。

69

ませ文字列フォーマット:通常、1つ(または2)任意のを達成するために、「明白な」やり方がある間

>> print 'Foo',0 
Foo 0 
+2

これは印刷でうまく動作しますが、文字列として変数に代入することはできません。それはSetオブジェクトを与える。 – specialscope

+1

v3の 'print()' *関数*を使い、そのパラメータのいくつかを設定しない限り、2つの項目の間に余分な空白が残っています。 – Levon

10

Pythonはその中に興味深い言語ではありませんタスクは、柔軟性はまだ存在します。

s = "string" 
i = 0 

print (s + repr(i)) 

上記のコードは、のpython3シンタックスで記述されているが、バージョン3は、それらが義務化されるまで、印刷後の括弧は常に(オプション)させました。

これが役に立ちます。

ケイトリン

関連する問題