English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
introduzione
Python ha aggiunto una nuova metodo di formattazione delle stringhe nella versione 2.6: str.format(). La sua sintassi di base utilizza {} e : per sostituire il %. precedenti.
sintassi dei segnaposto durante la formattazione:
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
regola di "mappatura"
attraverso la posizione
str.format() può accettare un numero non limitato di parametri, la posizione non deve essere ordinata:
>>> "{0} {1}".format("hello", "world") 'hello world' >>> "{} {}".format("hello", "world") 'hello world' >>> "{1} {0} {1}".format("hello", "world") 'mondo hello mondo'
attraverso i parametri chiave
quando si utilizzano parametri chiave, la stringa deve fornire il nome del parametro:
>>> "Io sono {name}, l'età è {age}".format(name="huoty", age=18) 'Io sono huoty, l'età è 18' >>> user = {"name": "huoty", "age": 18} >>> "Io sono {name}, l'età è {age}".format(**user) 'Io sono huoty, l'età è 18'
attraverso le proprietà dell'oggetto
str.format() può leggere direttamente le proprietà dell'utente:
>>> class User(object): ... def __init__(self, name, age): ... self.name = name ... self.age = age ... ... def __str__(self): ... return "{self.name}({self.age})".format(self=self) ... ... def __repr__(self): ... return self.__str__() ... ... >>> user = User("huoty", 18) >>> user huoty(18) >>> "Io sono {user.name}, l'età è {user.age}".format(user=user) 'Io sono huoty, l'età è 18'
attraverso gli indici
all'interno di una stringa da formattare puoi accedere agli elementi tramite indici:
>>> names, ages = ["huoty", "esenich", "anan"], [18, 16, 8] >>> "Io sono {0[0]}, l'età è {1[2]}".format(names, ages) 'Io sono huoty, l'età è 8' >>> users = {"names": ["huoty", "esenich", "anan"], "ages": [18, 16, 8]} >>> "Io sono {names[0]}, l'età è {ages[0]}".format(**users)
specificazione della conversione
puoi specificare il tipo di conversione della stringa:
conversion ::= "r" | "s" | "a"
其中 "!r" 对应 repr(); "!s" 对应 str(); "!a" 对应 ascii()。 示例:
>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2') "repr() shows quotes: 'test1'; str() doesn't: test2"
其中 "!r" 对应 repr(); "!s" 对应 str(); "!a" 对应 ascii()。 示例:
>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')
"repr() shows quotes: 'test1'; str() doesn't: test2"
格式限定符 填充与对齐 填充常跟对齐一起使用。^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。 >>> "{:>8}".format("181716") ' 181716' >>> "{:0>8}".format("181716") '00181716' >>> "{:->8}".format("181716") '--181716' >>> "{:-<8}".format("181716") '181716--' >>> "{:-^8}".format("181716")
'-181716-'
>>> "{:-<25}>".format("Here ")
'Here -------------------->' 浮点精度 用 f 表示浮点类型,并可以在其前边加上精度控制: >>> "[ {:.2f} ]".format(321.33345) >>> "[ {:.1f} ]".format(321.33345) >>> "[ {:.4f} ]".format(321.33345) >>> "[ {:.4f} ]".format(321) '[ 321.0000 ]'
还可以为浮点数指定符号,+ 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格,在幅负数前加 -;- 与什么都不加({:f})时一致:
>>> '{:+f}; {:+f}'.format(3.141592657, -3.141592657) '+3.141593; -3.141593' >>> '{: f}; {: f}'.format(3.141592657, -3.141592657) ' 3.141593; -3.141593' >>> '{:f}; {:f}'.format(3.141592657, -3.141592657) '3.141593; -3.141593' >>> '{:-f}; {:-f}'.format(3.141592657, -3.141592657) '3.141593; -3.141593' >>> '{:+.4f}; {:+.4f}'.format(3.141592657, -3.141592657) +3.1416; -3.1416
Specificazione del sistema numerico
>>> "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(18) 'int: 18; hex: 12; oct: 22; bin: 10010' >>> "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(18) 'int: 18; hex: 0x12; oct: 0o22; bin: 0b10010'
Separatore di migliaia
È possibile utilizzare "," come separatore di migliaia:
>>> '{:,}'.format(1234567890) '1,234,567,890'
Visualizzazione dei percentuali
>>> "progresso: {:.2%}".format(19.88/22) 'progresso: 90.36%'
In realtà, format supporta anche altri simboli di tipo:
type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
Altri trucchi
Incapsulamento dei segnaposto
A volte l'incapsulamento dei segnaposto è molto utile:
>>> '{0:{riempimento}{allineamento}16}'.format("hello", riempimento='*', allineamento='^') '*****hello******' >>> >>> for num in range(5,12): ... for base in "dXob": ... print("{0:{larghezza}{base}}".format(num, base=base, larghezza=5), end=' ') ... print() ... ... 5 5 5 101 6 6 6 110 7 7 7 111 8 8 10 1000 9 9 11 1001 10 A 12 1010 11 B 13 1011
Come funzione
È possibile non specificare i parametri di formattazione e chiamare la funzione in un punto non rilevante:
>>> email_f = "Il tuo indirizzo email è {email}".format >>> print(email_f(email="[email protected]")) Il tuo indirizzo email è [email protected]
Escape parentesi graffe
Quando è necessario utilizzare parentesi graffe all'interno di una stringa, è possibile usarle come escape character:
>>> " Il conjunto {} viene spesso rappresentato come {{0}} ".format("empty") 'Il conjunto vuoto viene spesso rappresentato come {0} '
Sommario
Questo è tutto il contenuto dell'articolo, speriamo che il contenuto di questo articolo possa essere di qualche aiuto per il vostro studio o lavoro. Se avete domande, potete lasciare un commento per discuterle, grazie per il supporto di Corso urla.
Dichiarazione: il contenuto di questo articolo è stato prelevato dalla rete, di proprietà dei rispettivi autori, il contenuto è stato contribuito e caricato autonomamente dagli utenti internet, questo sito non detiene i diritti di proprietà, non è stato elaborato manualmente e non assume alcuna responsabilità legale correlata. Se si trova un contenuto sospetto di violazione del copyright, si prega di inviare una email a: notice#oldtoolbag.com (al momento dell'invio dell'email, sostituire # con @) per segnalare il problema e fornire prove pertinenti. Una volta verificata la violazione, questo sito eliminerà immediatamente il contenuto sospetto di violazione del copyright.