2010-07-08 9 views

Odpowiedz

71
myvariable = 4 
mystring = str(myvariable) # '4' 

również alternatywnie spróbować repr:

mystring = repr(myvariable) # '4' 

ten nazywany jest "konwersja" w Pythonie i jest dość powszechne.

+5

Nie użyłbym repr (myvariable) - często zwraca informacje o typie klasy, adresie pamięci itp. Jest bardziej przydatny do debugowania. Użyj str (myvariable) do konwersji na łańcuch i unicode (zmienny) w celu konwersji do unicode. – Abgan

+0

Całkowicie zgadzam się z Abganem, dziękuję za opracowanie. –

+1

A co z unikodem? Coś takiego jak 'str (u'ä ')' nie zadziała. Jednak 'repr (u'ä ')' zadziała. –

4

Z str(x). Jednak każdy typ danych może definiować własną konwersję ciągów znaków, więc może to nie być to, czego potrzebujesz.

+1

Jest to ważne, ale rzadko brane pod uwagę. Dobrze, że o tym wspomniałeś. – jathanism

8

str(object) załatwi sprawę.

Jeśli chcesz zmienić sposób, w jaki obiekt jest usztywniany, zdefiniuj metodę __str__(self) dla klasy obiektu. Taka metoda musi zwracać obiekt str lub unicode.

+0

Która metoda jest skuteczna? 'str (any_var)' lub 'any_var .__ str __()' –

+0

@ Kedar.Aitawdekar: Nawet jeśli zauważalna jest różnica w czasie wykonywania (co do którego wątpię, ale zachęcam do sprawdzenia go za pomocą modułu 'timeit'), powinieneś użyj 'str (any_var)', ponieważ jest bardziej czytelny dla ludzi i pozwala korzystać z przypadków, gdy 'any_var' definiuje' __repr __() ', ale nie definiuje' __str __() '. – Abgan

+0

Dziękuję za odpowiedź. –

1

Wystarczy użyć str - na przykład:

>>> str([]) 
'[]' 
10

Korzystanie z str wbudowane:

x = str(something) 

Przykłady:

>>> str(1) 
'1' 
>>> str(1.0) 
'1.0' 
>>> str([]) 
'[]' 
>>> str({}) 
'{}' 

... 

Z dokumentacji:

Powoduje zwrócenie ciągu zawierającego dobrze drukowaną reprezentację obiektu. W przypadku łańcuchów zwraca ciąg znaków. Różnica z repr (object) polega na tym, że str (object) nie zawsze próbuje zwrócić łańcuch, który jest akceptowalny dla eval(); jego celem jest zwrócenie łańcucha nadającego się do drukowania. Jeśli nie podano żadnego argumentu, zwraca pusty łańcuch, "".

31

str służy do tworzenia reprezentacji ciągów danych obiektu. Jeśli piszesz swoją klasę i chcesz str pracować dla Ciebie, dodać:

def __str__(self): 
    return ... 

print str(myObj) wezwie myObj.__str__().

repr jest podobną metodą, która generalnie generuje informacje na temat informacji o klasie. W przypadku większości obiektów biblioteki rdzeniowej, repr tworzy nazwę klasy (i czasami niektóre informacje o klasie) między nawiasami ostrymi. repr zostanie użyty, na przykład, po prostu wpisując obiekt w okienku interakcji, bez używania print lub czegokolwiek innego.

Można zdefiniować zachowanie repr dla własnych obiektów jak można zdefiniować zachowanie str:

def __repr__(self): 
    return ... 

>>> myObj w swoim okienku Interakcje lub repr(myObj) spowoduje myObj.__repr__()

11

I zobacz wszystkie odpowiedzi polecam używając str(object). Może się to nie udać, jeśli obiekt ma więcej niż znaki ASCII, a zobaczysz błąd podobny do tego: ordinal not in range(128).To był przypadek dla mnie, a ja konwersji listy ciąg w języku innym niż angielski

postanowiłem go za pomocą unicode(object)

HTH

+1

w Pythonie 3.0, str (obiekt) domyślnie unicode – dmjalund

0

można użyć% s w sposób jak poniżej

>>> "%s" %([]) 
'[]' 
0

użyć formatowania:

"%s" % (x) 

Ex obszerna:

x = time.ctime(); str = "%s" % (x); print str 

wyjścia: Thu Jan 11 20:40:05 2018

Powiązane problemy