2012-07-19 21 views
84

böylece hatayı alamadım içinPython dize ve tamsayı bitiştirme python'da

print s+str(i) 

yazmak size hata verecektir

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

olduğunu varsayalım.

Bu, int ve string birleştirme işlemek için oldukça beceriksiz bir yol olduğunu düşünüyorum. Hatta Java, bu sıralama birleştirme işlemini yapmak için String'e açık bir dökümlemeye ihtiyaç duymaz. Bu tür bir birleştirme işlemini Python'da açık bir döküm olmadan yapmak için daha iyi bir yol var mı?

+7

öyle. – mouad

+3

Bu belirsizliğe yol açacaktır. "1" + 1 ', '2' veya' "11" 'nin sonucu ne olur? – Buddy

+1

Buddy Ne düşündüğünüzden emin değilim, lütfen sadece varsaymayın. Benim problemim 2 farklı nesne türünü birleştirmekti ve çözümü buldum. Python'da ne kadar programladığınızı bilmiyorum ama hiç biri iki tipte birleştirmeyi denediniz mi? Açık çekler yapabilirsin ama bu sadece fazladan bir kod. Bu tür bir şey, hataları günlüğe kaydetmeniz gerektiğinde gereklidir. – specialscope

cevap

104

Modern dize biçimlendirmesi:

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

Bunu yapmanın bu güzel yolu teşekkürler. – specialscope

+0

Sadece gelecek nesiller için, çünkü geçmişte işler değişti ve gelecekte değişmesi muhtemeldir: Bu, hangi versiyonun "modern" idir? – jvriesem

23

dize biçimlendirme, yeni tarzı .format() yöntemi kullanılarak (varsayılan .format() ile sağlamasıdır):

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

Veya daha eski, ama "yine de etrafında yapıştırma", % -Biçimlendirme:

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

Yukarıdaki iki örnekte, birleştirilen iki öğe arasında no boşluk var. Boşluk gerekiyorsa, biçim dizelerinde basitçe eklenebilir.

Bunlar, öğelerin, bunların arasındaki alanın nasıl birleştirileceği konusunda bir lot denetim ve esneklik sağlar ve format specifications see this hakkında ayrıntılar için.

69

Hayır dize biçimlendirmesi: genellikle bir (veya iki) herhangi bir başarmak için "bariz" yollar varken

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

Bu, yazdırma ile iyi çalışır, ancak bir değişken olarak bir dize olarak atanamaz. Set nesnesini verir. – specialscope

+1

Ayrıca, v3 'print()' * işlevini * kullanmazsanız ve bu parametrelerin bazılarını ayarlamadıkça, iki öğe arasında fazladan boşluk bırakmaz. – Levon

10

Python ki ilginç bir dildir görev, esneklik hala var. sürüm 3 onları zorunlu hale gelene kadar

s = "string" 
i = 0 

print (s + repr(i)) 

Yukarıdaki kod parçacığı Python3 sözdiziminde yazılır ancak baskı sonrası parantezler hep (opsiyonel) izin verildi.

Bu yardımcı olur umarım. Python Güçlü Yazılan (https://en.wikipedia.org/wiki/Strong_typing) dili (:) daha iyi anlamak için google şey) olduğu için

Caitlin