Come posso modificare qualsiasi tipo di dati in una stringa in Python?
Come posso modificare qualsiasi tipo di dati in una stringa in Python?
Risposte:
myvariable = 4
mystring = str(myvariable) # '4'
inoltre, in alternativa prova repr:
mystring = repr(myvariable) # '4'
Questa è chiamata "conversione" in Python ed è abbastanza comune.
str(u'ä')non funzionerà. Comunque repr(u'ä')funzionerà.
strè pensato per produrre una rappresentazione in forma di stringa dei dati dell'oggetto. Se stai scrivendo la tua lezione e vuoi strlavorare per te, aggiungi:
def __str__(self):
return "Some descriptive string"
print str(myObj)chiamerà myObj.__str__().
reprè un metodo simile, che generalmente produce informazioni sulle informazioni sulla classe. Per la maggior parte dell'oggetto libreria principale, reprproduce il nome della classe (e talvolta alcune informazioni sulla classe) tra parentesi angolari. reprverrà utilizzato, ad esempio, semplicemente digitando l'oggetto nel riquadro delle interazioni, senza utilizzare printo altro.
Puoi definire il comportamento di reprper i tuoi oggetti proprio come puoi definire il comportamento di str:
def __repr__(self):
return "Some descriptive string"
>>> myObjnel riquadro delle interazioni, o repr(myObj), comporteràmyObj.__repr__()
object.__repr__rappresentazione di parentesi angolari in stile, ma molti di quelli più comunemente usati non lo fanno. La regola generale per reprè che se ha senso restituire il codice Python che potrebbe essere valutata per produrre lo stesso oggetto, farlo, come str, frozensete molti altri builtins fare, ma se non è così, usa l'angolo staffa modulo per assicurarsi che ciò che si restituisce non possa essere scambiato per un repr leggibile e valutabile come fonte.
listche include se stessa restituisce qualcosa che non solo assomiglia ma è un codice valutabile, che valuta la cosa sbagliata - ma gli sviluppatori principali non l'hanno mai preso come licenza per espandere lo stesso comportamento nello stdlib.)
Vedo che tutte le risposte raccomandano l'uso str(object). Potrebbe non riuscire se il tuo oggetto ha più di caratteri ASCII e vedrai un errore simile ordinal not in range(128). Questo è stato il caso per me mentre stavo convertendo un elenco di stringhe in una lingua diversa dall'inglese
L'ho risolto usando unicode(object)
str(object) farà il trucco.
Se si desidera modificare il modo in cui l'oggetto viene rigorosamente definito, definire il __str__(self)metodo per la classe dell'oggetto. Tale metodo deve restituire l'oggetto str o unicode.
str(any_var)oppureany_var.__str__()
timeitmodulo), dovresti usare str(any_var)poiché è più leggibile per l'uomo e consente di beneficiare dei casi quando any_vardefinisce __repr__()ma non lo fa definire __str__().
Usa il strbuilt-in:
x = str(something)
Esempi:
>>> str(1)
'1'
>>> str(1.0)
'1.0'
>>> str([])
'[]'
>>> str({})
'{}'
...
Dalla documentazione:
Restituisce una stringa contenente una rappresentazione ben stampabile di un oggetto. Per le stringhe, questo restituisce la stringa stessa. La differenza con repr (oggetto) è che str (oggetto) non tenta sempre di restituire una stringa accettabile per eval (); il suo obiettivo è restituire una stringa stampabile. Se non viene fornito alcun argomento, restituisce la stringa vuota ''.
Basta usare str, ad esempio:
>>> str([])
'[]'
Fai attenzione se vuoi veramente "cambiare" il tipo di dati. Come in altri casi (ad esempio, la modifica dell'iteratore in un forciclo) ciò potrebbe comportare comportamenti imprevisti:
>> 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)? è quello che stai cercando?