Verkettung von Zeichenfolge und Ganzzahl in Python

136

In Python sagst du

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

wird Ihnen Fehler geben, so dass Sie schreiben

print s+str(i) 

Fehler nicht bekommen.

Ich denke, dies ist eine ziemlich ungeschickte Art, mit Int- und String-Verkettung umzugehen. Selbst Java muss nicht explizit in String umgewandelt werden, um diese Art der Verkettung durchzuführen. Gibt es eine bessere Möglichkeit, diese Art der Verkettung durchzuführen, dh ohne explizites Casting in Python?

Spezialbereich
quelle
8
Dies liegt daran, dass Python eine stark typisierte Sprache ( en.wikipedia.org/wiki/Strong_typing ) ist (etwas, auf das man googeln kann, um mehr zu verstehen :)).
Mouad
3
Dies würde zu Mehrdeutigkeiten führen. Was wäre das Ergebnis "1" + 1, 2oder "11"und warum?
Buddy
1
Kumpel Ich bin mir nicht sicher, was du denkst, aber bitte nimm nicht einfach an. Mein Problem bestand darin, zwei verschiedene Objekttypen zu verketten, und ich fand die Lösung. Ich weiß nicht, wie viel Sie in Python programmiert haben, aber haben Sie jemals versucht, zwei Zeichenfolgen zu verketten, um nur dann einen Fehler zu erhalten, wenn eine davon vom Typ None ist? Sie können explizite Überprüfungen durchführen, aber das ist nur ein zusätzliches Stück Code. Diese Art von Dingen ist erforderlich, wenn Sie Fehler protokollieren müssen.
Specialscope
2
Nur s+str(i)und du hast recht!

Antworten:

87

Keine String-Formatierung:

>> print 'Foo',0
Foo 0
Burhan Khalid
quelle
2
Dies funktioniert gut mit Drucken, kann jedoch keiner Variablen als Zeichenfolge zugewiesen werden. Es gibt Set-Objekt.
Specialscope
2
Es wird auch ein zusätzliches Leerzeichen zwischen den beiden Elementen eingefügt, es sei denn, Sie verwenden die v3- print() Funktion und legen einige ihrer Parameter fest.
Levon
34

Zeichenfolgenformatierung mit der .format()Methode neuen Stils (mit den Standardeinstellungen .format () ):

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

Oder die ältere, aber "immer noch %herumbleibende " Formatierung:

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

In beiden obigen Beispielen ist kein Leerzeichen zwischen den beiden verketteten Elementen. Wenn Speicherplatz benötigt wird, kann dieser einfach in den Formatzeichenfolgen hinzugefügt werden.

Diese bieten viel Kontrolle und Flexibilität hinsichtlich der Verkettung von Elementen, des Abstands zwischen ihnen usw. Einzelheiten zu Formatspezifikationen finden Sie hier .

Levon
quelle
14

Python ist insofern eine interessante Sprache, als es normalerweise eine (oder zwei) "offensichtliche" Möglichkeiten gibt, eine bestimmte Aufgabe zu erfüllen, aber dennoch Flexibilität besteht.

s = "string"
i = 0

print (s + repr(i))

Das obige Code-Snippet ist in Python3-Syntax geschrieben, aber die Klammern nach dem Drucken waren immer zulässig (optional), bis Version 3 sie obligatorisch machte.

Hoffe das hilft.

Caitlin

CaitlinG
quelle
5

Die Methode format () kann verwendet werden, um Zeichenfolge und Ganzzahl zu verketten

print(s+"{}".format(i))
Aakash Wadhwa
quelle
0

Wenn Sie nur drucken möchten, können Sie dies tun:

print(s , i)
Daniel Jiménez
quelle
0

In Python 3.6 und höher können Sie es wie folgt formatieren:

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

oder nur:

print(f'{s} {i}')
Kasra Najafi
quelle