English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di base di Python

Controllo dei flussi in Python

Funzione in Python

Tipi di dati in Python

Operazioni sui file in Python

Oggetti e classi in Python

Date e ora in Python

Conoscenze avanzate di Python

Manuale di Python

Stringa (String) in Python

In questo tutorial, imparerai come creare, formattare, modificare e eliminare stringhe in Python. Inoltre, ti presenteremo vari operazioni e funzioni di stringa.

Cos'è una stringa in Python?

Una stringa è una sequenza di caratteri.

Un carattere è solo un simbolo. Ad esempio, l'inglese ha 26 caratteri.

I computer non elaborano i caratteri, elaborano i numeri (binari). Anche se potresti vedere i caratteri sullo schermo, all'interno vengono memorizzati e manipolati come combinazioni di 0 e 1.

Questa trasformazione da carattere a numero si chiama codifica, mentre il processo opposto è la decodifica. ASCII e Unicode sono alcune delle codifiche più comuni.

In Python, le stringhe sono sequenze di caratteri Unicode. L'introduzione di Unicode include tutti i caratteri di ogni lingua e introduce una codifica unificata. Puoi trovare ulteriori informazioni quiUlteriori informazioni su Unicode.

Come creare stringhe in Python?

Si possono creare stringhe mettendo i caratteri tra virgolette singole o doppie. In Python si può anche utilizzare le virgolette triple, ma di solito si utilizzano per rappresentare stringhe multiriga e stringhe di documentazione.

# Questi sono tutti equivalenti
my_string = 'Ciao'
print(my_string)
my_string = "Ciao"
print(my_string)
my_string = '''Ciao'''
print(my_string)
# Le stringhe con triple virgolette possono estendersi su più righe
my_string = "Ciao, benvenuti in
           il mondo di Python"""
print(my_string)

Quando si esegue il programma, l'output è:

Ciao
Ciao
Ciao
Ciao, benvenuti in
           il mondo di Python

Come accedere ai caratteri della stringa?

Possiamo accedere a un singolo carattere utilizzando l'indice e accedere a una serie di caratteri utilizzando il taglio. L'indice parte da 0. Tentare di accedere a un carattere al di fuori dell'intervallo di indici genererà un IndexError. L'indice deve essere un intero. Non possiamo utilizzare float o altri tipi, il che causerebbe un TypeError.

Python consente di utilizzare l'indice negativo per le sequenze.

L'indice -1 rappresenta l'ultimo elemento, -2 rappresenta il penultimo elemento, e così via. Possiamo utilizzare l'operatore di taglio (due punti) per accedere a una serie di elementi nella stringa.

str = 'oldtoolbag.com'
print('str = ', str)
# Primo carattere
print('str[0] = ', str[0])
# Ultimo carattere
print('str[-1] = ', str[-1])
# Tagliare i secondi a quinti caratteri
print('str[1:5] = ', str[1:5])
# Tagliare da第六个字符 a倒数第二个字符
print('str[5:-2] = ', str[5:-2])

Risultato dell'output:

str = oldtoolbag.com
str[0] = n
str[-1] = m
str[1:5] = hooo
str[5:-2] = .c

Se si tenta di accedere a un indice fuori dai limiti o utilizzare un numero decimale, verrà generato un errore.

# Gli indici devono essere all'interno dell'intervallo
>>> my_string[15]  
...
IndexError: string index out of range
# Gli indici devono essere interi
>>> my_string[1.5] 
...
TypeError: string indices must be integers

Considerando che l'indice si trova tra gli elementi, è possibile visualizzare meglio le sezioni come segue.

Per accedere a un intervallo, è necessario utilizzare l'indice, che estrarrà una parte della stringa.

Come modificare o eliminare una stringa?

Le stringhe sono immutabili. Questo significa che una volta assegnati, i loro elementi non possono essere modificati. Possiamo semplicemente assegnare diverse stringhe al nome stesso.

>>> my_string = 'oldtoolbag.com'
>>> my_string[5] = 'a'
...
TypeError: 'str' object does not support item assignment
>>> my_string = 'Python'
>>> my_string
'Python'

Non possiamo eliminare o rimuovere i caratteri dalla stringa. Ma possiamo eliminare completamente la stringa utilizzando la parola chiave del.

>>> del my_string[1]
...
TypeError: 'str' object doesn't support item deletion
>>> del my_string
>>> my_string
...
NameError: name 'my_string' is not defined

Operazioni sulle stringhe in Python

Le stringhe possono eseguire molte operazioni, il che le rendeIn PythonIl più comuneUno dei tipi di dati.

Concatenazione di due o più stringhe

Concatenare due o più stringhe in una singola stringa si chiama concatenazione.

L'operatore + in Python esegue l'operazione di concatenazione. Basta scrivere insieme due stringhe testuali per concatenarle.

* Gli operatori possono essere usati per ripetere una stringa un numero specifico di volte.

str1 = 'Hello'
str2 = 'World!'
# using +
print('str1 + str2 =', str1 + str2)
# using *
print('str1 * 3 =', str1 * 3)

Scrivere insieme due stringhe testuali è uguale a+Gli operatori le connettono insieme.

Se si desidera connettere due stringhe su righe diverse, è possibile utilizzare parentesi.

>>> # Due due stringhe testuali insieme
>>> 'Hello ''World!'
'Hello World!'
>>> # Utilizzo di parentesi
>>> s = ('Hello '
...        'World')
>>> s
'Hello World'

Esplorare la stringa

UsandoCiclo forPossiamo esplorare la stringa. Questo è un esempio di calcolo del numero di 'l' nella stringa.

count = 0
for letter in 'Hello World':
    if(letter == 'l'):
        count += 1
print(count, 'letters found')

Test di appartenenza della stringa

Possiamo utilizzare la parola chiave in per testare se una sottostringa esiste nella stringa.

>>> 'a' in 'program'
True
>>> 'at' not in 'battle'
False

Utilizzo delle funzioni built-in di Python

Si possono utilizzare vari funzioni built-in di sequence e string.

Alcuni comuni sono enumerate() e len(). La funzione enumerate() ha lo scopo di: restituire un oggetto di enumerazione. Contiene in forma a coppie l'indice e il valore di tutti gli elementi della stringa. Questo è utile per l'iterazione.

Anche così, len() restituisce la lunghezza della stringa (numero di caratteri).

str = 'cold'
# enumerate()
list_enumerate = list(enumerate(str))
print('list(enumerate(str) = ', list_enumerate)
# Numero di caratteri
print('len(str) = ', len(str))

Formato delle stringhe Python

转义序列

Se vogliamo stampare un testo - lui disse: "What's there?" - non possiamo utilizzare apici singoli o virgolette doppie. Questo causerebbe un SyntaxError in quanto il testo contiene apici singoli e virgolette doppie.

>>> print("He said, "What's there?"")
...
SyntaxError: sintassi non valida
>>> print('He said, "What's there?"')
...
SyntaxError: sintassi non valida

Una soluzione a questo problema è l'uso di tre apici. Inoltre, possiamo utilizzare le sequenze di escape.

Le sequenze di escape iniziano con una barra obliqua e vengono interpretate in modi diversi. Se utilizziamo gli apici singoli per rappresentare una stringa, è necessario esitare tutti gli apici singoli all'interno della stringa. Lo stesso vale per le virgolette doppie. Questo è il modo di rappresentare il testo sopra menzionato.

# Utilizzo di tre apici singoli
print('''He \\nsaid, \\"What's \\nthere?\\)''')
# 转义单引号
print('He \\nsaid, \\"What\\'s \\nthere?\\)')
# 转义双引号
print("He \\nsaid, \\"What's \\nthere?\\)

这是Python支持的所有转义序列的列表。

Python中的转义序列
转义序列描述
\\newline反斜杠和换行符被忽略
\\\反斜杠
\\'单引号
\\"双引号
\\aASCII铃声
\\bASCII退格键
\\fASCII换页
\\nASCII换行
\\rASCII回车
\\tASCII水平制表符
\\vASCII垂直制表符
\\ooo具有八进制值的字符
\\xHH具有十六进制值HH的字符

这里有些示例

>>> print("C:\\\Python32\\\\Lib")
C:\\Python32\\Lib
>>> print("This \\nis \\nprinted\\nin \\ntwo \\nlines")
This \\nis \\nprinted
in \\ntwo \\nlines
>>> print("This \\nis \\n\x48\x45\x58 \\nrepresentation")
This \\nis \\nHEX \\nrepresentation

原始字符串忽略转义序列

有时我们可能希望忽略字符串中的转义序列。为此,我们可以将其放置在字符串的前面r或R前面。这意味着这是一个原始字符串,并且其中的任何转义序列都将被忽略。

>>> print("This \\x61 \\ngood \\nexample")
This \\nis \\na
good \\nexample
>>> print(r"This \\x61 \\ngood \\nexample")
This \\x61 \\ngood \\nexample

用format()方法格式化字符串

与string对象一起使用的format()方法非常通用,并且在格式化字符串方面功能非常强大。格式字符串包含大括号{}作为占位符或被替换的替换字段。

我们可以使用位置参数或关键字参数来指定顺序。

# 默认(隐式)顺序
default_order = "{}, {} and {}".format('John','Bill','Sean')
print('\n--- Default Order ---')
print(default_order)
# Ordinamento con parametri posizionali
positional_order = "{1}, {0} and {2}".format('John','Bill','Sean')
print('\n--- Positional Order ---')
print(positional_order)
# Ordinamento con parametri chiave
keyword_order = "{s}, {b} and {j}".format(j='John',b='Bill',s='Sean')
print('\n--- Keyword Order ---')
print(keyword_order)

Il metodo format() può avere specifiche di formato opzionali. Utilizzano due punti per separare i campi di nome. Ad esempio, possiamo allineare a sinistra <, a destra > o centrare ^ le stringhe nello spazio dato. Possiamo anche formattare gli interi in binario, esadecimale ecc., e i numeri a virgola mobile possono essere arrotondati o visualizzati in formato esponenziale. Puoi utilizzare molti formati. Visita qui perottenere il format()disponibilii metodiTuttiFormattazione delle stringhe.

>>> # Formattazione degli interi
>>> "La rappresentazione binaria di {0} è {0:b}".format(12)
'La rappresentazione binaria di 12 è 1100'
>>> # Formattazione dei numeri a virgola mobile
>>> "Representazione esponenziale: {0:e}".format(1566.345)
'Representazione esponenziale: 1.566345e+03'
>>> # Arrotondamento
>>> "One third is: {0:.3f}".format(1/3)
'One third is: 0.333'
>>> # Allineamento delle stringhe
>>> "|{:<10}|{:^10}|{:>10}|".format('butter','bread','ham')
'|butter    |  bread   |       ham|'

Stile di formattazione vecchio

Possiamo anche formattare le stringhe come lo stile vecchio di sprintf() nel linguaggio di programmazione C. Utilizziamo l'operatore % per completare questa attività.

>>> x = 12.3456789
>>> print('Il valore di x è %3.2f' % x)
Il valore di x è 12.35
>>> print('Il valore di x è %3.4f' % x)
Il valore di x è 12.3457

Metodi di stringa comuni in Python

Gli oggetti stringa hanno molti metodi disponibili. Il metodo format() menzionato sopra è uno di essi. Metodi comuni includono lower(), upper(), join(), split(), find(), replace() e altri. Ecco l'elenco completoMetodi incorporati per la gestione delle stringhe in Python.

>>> 'w3codebox'.lower()
w3codebox
>>> 'w3codebox'.upper()
w3codebox
>>> 'Questo unirà tutte le parole in una lista'.split()
['Questo', 'unirà', 'tutte', 'le', 'parole', 'in', 'una', 'lista']
>>> ' '.join(['Questo', 'unirà', 'tutte', 'le', 'parole', 'in', 'una', 'stringa'])
'Questo unirà tutte le parole in una stringa'
>>> 'Anno Nuovo'.find('ew')
7
>>> 'Anno Nuovo'.replace('Anno Nuovo','Splendido')
'Anno Nuovo Splendido'