Konwertujesz liczbę całkowitą na ciąg?

1361

Chcę przekonwertować liczbę całkowitą na ciąg w Pythonie. Na próżno piszę to na maszynie:

d = 15
d.str()

Kiedy próbuję przekonwertować go na ciąg znaków, pojawia się błąd, jakby intnie miał żadnego wywołanego atrybutu str.

Chłop
źródło

Odpowiedzi:

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

Linki do dokumentacji:

Konwersja na łańcuch odbywa się za pomocą wbudowanej str()funkcji, która w zasadzie wywołuje __str__()metodę swojego parametru.

Bastien Léonard
źródło
118

Spróbuj tego:

str(i)
Lasse V. Karlsen
źródło
62

W Pythonie nie ma typowania rzutów ani przymusu typu. Musisz skonwertować zmienną w sposób jawny.

Aby przekonwertować obiekt na ciąg znaków, użyj str()funkcji. Działa z każdym obiektem, który ma __str__()zdefiniowaną metodę o nazwie . w rzeczywistości

str(a)

jest równa

a.__str__()

To samo, jeśli chcesz przekonwertować coś na int, float itp.

Andrea Ambu
źródło
to rozwiązanie pomogło mi, konwertowałem ciąg alfanumeryczny na ciąg liczbowy, zastępując litery ich wartościami ascii, jednak bezpośrednie użycie funkcji str () nie działało, ale działał __str __ (). Przykład (python2.7); s = "14.2.2.10a2" niedziałający kod: print "" .join ([str (ord (c)) if (c.isalpha ()) else c for c in s]) kod roboczy: print "" .join ([ord (c) .__ str __ () if (c.isalpha ()) else c for c in s]) Oczekiwany wynik: 14.2.2.10972
Jayant
18

Aby zarządzać danymi niecałkowitymi:

number = raw_input()
try:
    value = int(number)
except ValueError:
    value = 0
nik
źródło
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
źródło
11

W Pythonie => 3.6 możesz użyć fformatowania:

>>> int_value = 10
>>> f'{int_value}'
'10'
>>>
SuperNova
źródło
7

W Pythonie 3.6 możesz użyć nowej funkcji f-strings, aby przekonwertować na string, i jest szybszy w porównaniu do funkcji str (), jest on używany w następujący sposób:

age = 45
strAge = f'{age}'

Z tego powodu Python udostępnia funkcję str ().

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

Aby uzyskać bardziej szczegółową odpowiedź, możesz sprawdzić ten artykuł: Konwertowanie Python Int na String i Python String na Int

Mohamed Makkaoui
źródło
6

Moim zdaniem najbardziej przyzwoity sposób to ``.

i = 32   -->    `i` == '32'
Nikolas
źródło
3
Zauważ, że jest to równoważne repr(i), więc będzie dziwne na długo. (Spróbuj i = `2 ** 32`; print i)
16
Zostało to przestarzałe w Pythonie 2 i całkowicie usunięte w Pythonie 3, więc nie sugerowałbym go już używać. docs.python.org/3.0/whatsnew/3.0.html#removed-syntax
teeks99
6

Można użyć %slub.format

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

(LUB)

>>> '{}'.format(10)
'10'
>>>
SuperNova
źródło
5

Dla kogoś, kto chce przekonwertować int na ciąg znaków w określonych cyfrach, zalecana jest poniższa metoda.

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

Aby uzyskać więcej informacji, zapoznaj się z pytaniem Przepełnienie stosu Wyświetl numer z wiodącymi zerami .

Eugene
źródło
4

Wraz z wprowadzeniem ciągów f w Pythonie 3.6 to zadziała również:

f'{10}' == '10'

Jest to w rzeczywistości szybsze niż dzwonienie str(), kosztem czytelności.

W rzeczywistości jest szybszy niż %xformatowanie ciągów i .format()!

Alec Alameddine
źródło