Python'da dize ve tamsayıyı bitiştirme


136

Python'da var ki

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

yazman için hata verecek

print s+str(i) 

hata almamak.

Bu int ve string birleştirme işlemek için oldukça beceriksiz bir yol olduğunu düşünüyorum. Java bile bu tür birleştirme yapmak için String'e açık bir şekilde döküm yapmanıza gerek yoktur. Python'da açık döküm olmadan bu tür bir birleştirme yapmanın daha iyi bir yolu var mı?


8
Çünkü Python Güçlü yazılmıştır ( en.wikipedia.org/wiki/Strong_typing ) dil (daha fazla anlamak için google'da bir şeyler :)).
mouad

3
Belirsizlik yaratacaktır. Ne sonucunda ortaya çıkacak "1" + 1, 2ya da "11"neden?
Buddy

1
Dostum Ne düşündüğünden emin değilim ama lütfen sanmıyorum. Benim sorunum 2 farklı nesne türlerini birleştirmek oldu ve çözümü buldum. Ben ne kadar python programlanmış bilmiyorum ama hiç biri bunlardan biri türü olduğunda hata almak için iki dizeleri bitiştirmeye çalıştınız mı? Açık kontroller yapabilirsiniz ama bu sadece kod biraz. Hataları günlüğe kaydetmeniz gerektiğinde bu tür bir şey gerekir.
specialscope

2
Sadece s+str(i), ve haklısın!

Yanıtlar:



87

Dize biçimlendirmesi yok:

>> print 'Foo',0
Foo 0

2
Bu baskı ile iyi çalışır ancak bir değişkene dize olarak atanamaz. Set nesnesini verir.
specialscope

2
Ayrıca, v3 print() işlevini kullanmadığınız ve bazı parametrelerini ayarlamadığınız sürece, iki öğe arasında fazladan bir boşluğa yapışır .
Levon

34

Dize biçimlendirme, yeni stil .format()yöntemini kullanarak ( .format () varsayılanlarıyla sağlar):

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

Ya da daha yaşlı, ama "hala %yapışıyor ", -biçimlendiriyor:

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

Yukarıdaki her iki örnekte de birleştirilen iki öğe arasında boşluk yoktur . Boşluk gerekiyorsa, biçim dizelerine kolayca eklenebilir.

Bunlar, öğelerin nasıl birleştirileceği, aralarındaki boşluk vb. Hakkında çok fazla kontrol ve esneklik sağlar. Biçim özellikleriyle ilgili ayrıntılar için buna bakın .


14

Python ilginç bir dildir, çünkü herhangi bir görevi yerine getirmek için genellikle bir (veya iki) "bariz" yol olsa da, esneklik hala mevcuttur.

s = "string"
i = 0

print (s + repr(i))

Yukarıdaki kod snippet'i Python3 sözdiziminde yazılmıştır, ancak sürüm 3 zorunlu hale gelinceye kadar yazdırıldıktan sonra parantezlere her zaman izin verilir (isteğe bağlı).

Bu yardımcı olur umarım.

Caitlin


5

dize ve tamsayıyı birleştirmek için format () yöntemi kullanılabilir

print(s+"{}".format(i))


0

python 3.6 ve daha yenisinde, bunu şu şekilde biçimlendirebilirsiniz:

new_string = f'{s} {i}'
print(new_string)

ya da sadece:

print(f'{s} {i}')
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.