Ganzzahl in Zeichenfolge konvertieren?

1361

Ich möchte eine Ganzzahl in eine Zeichenfolge in Python konvertieren. Ich schreibe es vergeblich:

d = 15
d.str()

Wenn ich versuche, es in einen String zu konvertieren, wird ein Fehler angezeigt, intbei dem kein Attribut aufgerufen wird str.

Hick
quelle

Antworten:

2094
>>> str(10)
'10'
>>> int('10')
10

Links zur Dokumentation:

Die Konvertierung in einen String erfolgt mit der eingebauten str()Funktion, die im Grunde die __str__()Methode ihres Parameters aufruft .

Bastien Léonard
quelle
118

Versuche dies:

str(i)
Lasse V. Karlsen
quelle
62

In Python gibt es keine Typumwandlung und keinen Typenzwang. Sie müssen Ihre Variable explizit konvertieren.

Um ein Objekt in einen String zu konvertieren, verwenden Sie die str()Funktion. Es funktioniert mit jedem Objekt, dessen Methode __str__()definiert ist. Eigentlich

str(a)

ist äquivalent zu

a.__str__()

Das gleiche gilt, wenn Sie etwas in int, float usw. konvertieren möchten.

Andrea Ambu
quelle
Diese Lösung hat mir geholfen. Ich habe eine alphanumerische Zeichenfolge in eine numerische Zeichenfolge konvertiert und Buchstaben durch ihre ASCII-Werte ersetzt. Die direkte Verwendung der Funktion str () funktionierte jedoch nicht, aber __str __ () funktionierte. Beispiel (python2.7); s = "14.2.2.10a2" nicht funktionierender Code: print "" .join ([str (ord (c)) wenn (c.isalpha ()) sonst c für c in s]) Arbeitscode: print "" .join ([ord (c) .__ str __ () if (c.isalpha ()) else c für c in s]) Erwartete Ausgabe: 14.2.2.10972
Jayant
18

So verwalten Sie nicht ganzzahlige Eingaben:

number = raw_input()
try:
    value = int(number)
except ValueError:
    value = 0
nik
quelle
14
>>> i = 5
>>> print "Hello, world the number is " + i
TypeError: must be str, not int
>>> s = str(i)
>>> print "Hello, world the number is " + s
Hello, world the number is 5
maxaposteriori
quelle
11

In Python => 3.6 können Sie folgende fFormatierungen verwenden:

>>> int_value = 10
>>> f'{int_value}'
'10'
>>>
SuperNova
quelle
7

Für Python 3.6 können Sie die neue Funktion f-strings zum Konvertieren in einen String verwenden. Sie ist schneller als die Funktion str () und wird folgendermaßen verwendet:

age = 45
strAge = f'{age}'

Python bietet aus diesem Grund die Funktion str ().

digit = 10
print(type(digit)) # will show <class 'int'>
convertedDigit= str(digit)
print(type(convertedDigit)) # will show <class 'str'>

Eine ausführlichere Antwort finden Sie in diesem Artikel: Konvertieren von Python Int in String und Python String in Int

Mohamed Makkaoui
quelle
6

Der anständigste Weg ist meiner Meinung nach ``.

i = 32   -->    `i` == '32'
Nikolas
quelle
3
Beachten Sie, dass dies äquivalent zu ist repr(i), so dass es für lange Zeit seltsam sein wird. (Versuchen Sie i = `2 ** 32`; print i)
16
Dies wurde in Python 2 veraltet und in Python 3 vollständig entfernt, daher würde ich nicht mehr empfehlen, es zu verwenden. docs.python.org/3.0/whatsnew/3.0.html#removed-syntax
teeks99
6

Kann %soder verwenden.format

>>> "%s" % 10
'10'
>>>

(ODER)

>>> '{}'.format(10)
'10'
>>>
SuperNova
quelle
5

Für jemanden, der int in einen String mit bestimmten Ziffern konvertieren möchte, wird die folgende Methode empfohlen.

month = "{0:04d}".format(localtime[1])

Weitere Informationen finden Sie unter Stapelüberlauffrage Anzeigenummer mit führenden Nullen .

Eugene
quelle
4

Mit der Einführung von F-Strings in Python 3.6 funktioniert dies auch:

f'{10}' == '10'

Es ist tatsächlich schneller als ein Anruf str(), auf Kosten der Lesbarkeit.

In der Tat ist es schneller als die %xFormatierung von Zeichenfolgen und .format()!

Alec Alameddine
quelle