Как я могу изменить любой тип данных в строку в Python?
Как я могу изменить любой тип данных в строку в Python?
Ответы:
myvariable = 4
mystring = str(myvariable) # '4'
Также попробуйте repr:
mystring = repr(myvariable) # '4'
Это называется «преобразованием» в Python и встречается довольно часто.
str(u'ä')не сработает. Однако repr(u'ä')будет работать.
strпредназначен для создания строкового представления данных объекта. Если вы пишете свой собственный класс и хотите strработать на себя, добавьте:
def __str__(self):
return "Some descriptive string"
print str(myObj)позвоню myObj.__str__().
reprэто аналогичный метод, который обычно производит информацию о классе информации. Для большинства базовых объектов библиотеки reprвыдает имя класса (и иногда некоторую информацию о классе) в угловых скобках. reprбудет использоваться, например, просто введя ваш объект в панель взаимодействий, без использованияprint или чего-либо еще.
Вы можете определить поведение reprдля ваших собственных объектов так же, как вы можете определить поведение str:
def __repr__(self):
return "Some descriptive string"
>>> myObjв панели взаимодействий, или repr(myObj), приведет кmyObj.__repr__()
object.__repr__угловых скобок -style, но многие из наиболее часто используемых - нет. Правило для reprявляется то , что , если это имеет смысл вернуться Python код , который может быть оценен , чтобы произвести тот же объект, сделать это, так же как str, frozensetи большинство других делать встроенные функции , но если этого не произойдет , используйте угловую-кронштейн форма, чтобы убедиться, что то, что вы возвращаете, не может быть ошибочно принято за читаемое человеком и оцениваемое как источник.
listкоторый включает в себя, возвращает что-то, что не только выглядит, но и является оцениваемым кодом, который оценивает не то, что нужно - но разработчики ядра никогда не воспринимали это как лицензию для расширения того же самого поведение в stdlib.)
Я вижу все ответы рекомендую использовать str(object). Может произойти сбой, если ваш объект содержит больше символов ascii, и вы увидите ошибку вроде ordinal not in range(128). Это было так для меня, когда я конвертировал список строк на языке, отличном от английского
Я решил это с помощью unicode(object)
str(object) сделает свое дело.
Если вы хотите изменить способ строкового объекта, определите __str__(self)метод для класса объекта. Такой метод должен возвращать объект str или unicode.
str(any_var)илиany_var.__str__()
timeitмодуль), вы должны использовать, str(any_var)так как он более читабелен для человека и позволяет извлечь выгоду из случаев, когда any_varопределяет, __repr__()но не делает т определить __str__().
Используйте strвстроенные:
x = str(something)
Примеры:
>>> str(1)
'1'
>>> str(1.0)
'1.0'
>>> str([])
'[]'
>>> str({})
'{}'
...
Из документации:
Вернуть строку, содержащую хорошо печатаемое представление объекта. Для строк это возвращает саму строку. Разница с repr (объект) заключается в том, что str (объект) не всегда пытается вернуть строку, приемлемую для eval (); его цель - вернуть строку для печати. Если аргумент не указан, возвращает пустую строку ''.
Просто используйте str- например:
>>> str([])
'[]'
Используйте форматирование:
"%s" % (x)
Пример:
x = time.ctime(); str = "%s" % (x); print str
Выходные: чт 11 января 20:40:05 2018
Будьте осторожны, если вы действительно хотите «изменить» тип данных. Как и в других случаях (например, изменение итератора в forцикле), это может вызвать неожиданное поведение:
>> dct = {1:3, 2:1}
>> len(str(dct))
12
>> print(str(dct))
{1: 31, 2: 0}
>> l = ["all","colours"]
>> len(str(l))
18
str(var)? это то, что вы ищете?