Jak mogę zmienić dowolny typ danych na ciąg znaków w Pythonie?
Jak mogę zmienić dowolny typ danych na ciąg znaków w Pythonie?
Odpowiedzi:
myvariable = 4
mystring = str(myvariable) # '4'
również alternatywnie spróbuj repr:
mystring = repr(myvariable) # '4'
Nazywa się to „konwersją” w Pythonie i jest dość powszechne.
str(u'ä')nie zadziała. Jednak repr(u'ä')zadziała.
strma na celu utworzenie łańcucha reprezentującego dane obiektu. Jeśli piszesz własną klasę i chcesz strpracować dla siebie, dodaj:
def __str__(self):
return "Some descriptive string"
print str(myObj)zadzwoni myObj.__str__().
reprjest podobną metodą, która generalnie generuje informacje o klasie. W przypadku większości podstawowych obiektów bibliotecznych reprtworzy nazwę klasy (i czasami informacje o klasie) w nawiasach ostrych. reprzostanie użyty, na przykład, po prostu wpisując obiekt w panelu interakcji, bez użycia printlub czegokolwiek innego.
Możesz zdefiniować zachowanie reprwłasnych obiektów, tak jak możesz zdefiniować zachowanie str:
def __repr__(self):
return "Some descriptive string"
>>> myObjw panelu interakcji lub repr(myObj)spowodujemyObj.__repr__()
object.__repr__stylu nawiasów ostrych, ale wiele z najczęściej używanych nie. Ogólna reguła reprjest taka, że jeśli ma sens zwracanie kodu Pythona, który można by ocenić w celu wytworzenia tego samego obiektu, zrób to tak samo str, jak frozensetwiększość innych poleceń wbudowanych, ale jeśli nie, użyj nawiasu kątowego formularz, aby upewnić się, że to, co zwracasz, nie może zostać pomylone z plikiem źródłowym czytelnym dla człowieka i możliwym do oceny.
listktóra zawiera samą siebie zwraca coś, co nie tylko wygląda, ale jest kodem możliwym do oceny, co ocenia nieprawidłowo - ale rdzenni deweloperzy nigdy nie traktowali tego jako licencji na rozszerzenie tego samego zachowanie do standardowej biblioteki.)
Widzę, że wszystkie odpowiedzi zalecają użycie str(object). Może się nie powieść, jeśli twój obiekt ma więcej znaków niż ASCII i zobaczysz błąd podobny do ordinal not in range(128). Tak było w przypadku mnie, gdy konwertowałem listę ciągów w języku innym niż angielski
Rozwiązałem to za pomocą unicode(object)
str(object) da rade.
Jeśli chcesz zmienić sposób, w jaki obiekt jest określany jako łańcuch, zdefiniuj __str__(self)metodę dla klasy obiektu. Taka metoda musi zwrócić obiekt str lub unicode.
str(any_var)lubany_var.__str__()
timeitmodułu), powinieneś użyć, str(any_var)ponieważ jest bardziej czytelny dla ludzi i pozwala korzystać z przypadków, gdy any_vardefiniuje, __repr__()ale nie robi t zdefiniować __str__().
Użyj strwbudowanego:
x = str(something)
Przykłady:
>>> str(1)
'1'
>>> str(1.0)
'1.0'
>>> str([])
'[]'
>>> str({})
'{}'
...
Z dokumentacji:
Zwraca łańcuch zawierający ładną, drukowalną reprezentację obiektu. W przypadku ciągów zwraca sam ciąg. Różnica z repr (obiekt) polega na tym, że str (obiekt) nie zawsze próbuje zwrócić łańcuch, który jest akceptowany przez eval (); jego celem jest zwrócenie drukowalnego ciągu. Jeśli nie podano argumentu, zwraca pusty ciąg, „”.
Po prostu użyj str- na przykład:
>>> str([])
'[]'
str(var)? czy tego szukasz?