Python orientato agli oggetti: file e stringhe
stringhe
Le stringhe sono i tipi di dati più popolari utilizzati in ogni linguaggio di programmazione. Perché? Perché noi comprendiamo il testo meglio dei numeri, quindi nello scrivere e parlare usiamo testo e parole, allo stesso modo anche nella programmazione usiamo stringhe. Nella stringa analizziamo il testo, analizziamo la semantica del testo e facciamo il data mining, e tutti questi dati sono testo consumato dall'uomo. La stringa in Python è immutabile.
Manipolazione delle stringhe
In Python, la stringa può essere contrassegnata in diversi modi, utilizzando virgolette singole ('), virgolette doppie (") o anche virgolette triple (' '') in caso di stringhe su più righe.
>>> # String Examples
>>> a = "hello"
>>> b = ''' A Multi line string,
Simple!'''
>>> e = ('Multiple' 'strings' 'togethers')
La manipolazione delle stringhe è molto utile e ampiamente utilizzata in tutte le lingue. Spesso, ai programmatori viene richiesto di scomporre le stringhe e di esaminarle da vicino.
Le stringhe possono essere ripetute (carattere per carattere), suddivise in porzioni o concatenate. La sintassi è la stessa degli elenchi.
La classe str ha numerosi metodi per rendere più facile la manipolazione delle stringhe. I comandi dir e help forniscono una guida all'interprete Python su come usarli.
Di seguito sono riportati alcuni dei metodi di stringa comunemente utilizzati che utilizziamo.
Sr.No. | Metodo e descrizione |
---|---|
1 | isalpha() Controlla se tutti i caratteri sono alfabeti |
2 | isdigit() Controlla i caratteri delle cifre |
3 | isdecimal() Controlla i caratteri decimali |
4 | isnumeric() controlla i caratteri numerici |
5 | find() Restituisce l'indice più alto delle sottostringhe |
6 | istitle() Verifica la presenza di stringhe contenenti titolo |
7 | join() Restituisce una stringa concatenata |
8 | lower() restituisce una stringa in lettere minuscole |
9 | upper() restituisce una stringa in maiuscolo |
10 | partion() Restituisce una tupla |
11 | bytearray() Restituisce un array di una data dimensione in byte |
12 | enumerate() Restituisce un oggetto enumerato |
13 | isprintable() Controlla il carattere stampabile |
Proviamo a eseguire un paio di metodi di stringa,
>>> str1 = 'Hello World!'
>>> str1.startswith('h')
False
>>> str1.startswith('H')
True
>>> str1.endswith('d')
False
>>> str1.endswith('d!')
True
>>> str1.find('o')
4
>>> #Above returns the index of the first occurence of the character/substring.
>>> str1.find('lo')
3
>>> str1.upper()
'HELLO WORLD!'
>>> str1.lower()
'hello world!'
>>> str1.index('b')
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
str1.index('b')
ValueError: substring not found
>>> s = ('hello How Are You')
>>> s.split(' ')
['hello', 'How', 'Are', 'You']
>>> s1 = s.split(' ')
>>> '*'.join(s1)
'hello*How*Are*You'
>>> s.partition(' ')
('hello', ' ', 'How Are You')
>>>
Formattazione delle stringhe
In Python 3.x la formattazione delle stringhe è cambiata, ora è più logica ed è più flessibile. La formattazione può essere eseguita utilizzando il metodo format () o il segno% (vecchio stile) nella stringa di formato.
La stringa può contenere testo letterale o campi sostitutivi delimitati da parentesi graffe {} e ogni campo sostitutivo può contenere l'indice numerico di un argomento posizionale o il nome di un argomento parola chiave.
sintassi
str.format(*args, **kwargs)
Formattazione di base
>>> '{} {}'.format('Example', 'One')
'Example One'
>>> '{} {}'.format('pie', '3.1415926')
'pie 3.1415926'
L'esempio seguente consente di riorganizzare l'ordine di visualizzazione senza modificare gli argomenti.
>>> '{1} {0}'.format('pie', '3.1415926')
'3.1415926 pie'
Imbottitura e allineamento delle stringhe
Un valore può essere riempito fino a una lunghezza specifica.
>>> #Padding Character, can be space or special character
>>> '{:12}'.format('PYTHON')
'PYTHON '
>>> '{:>12}'.format('PYTHON')
' PYTHON'
>>> '{:<{}s}'.format('PYTHON',12)
'PYTHON '
>>> '{:*<12}'.format('PYTHON')
'PYTHON******'
>>> '{:*^12}'.format('PYTHON')
'***PYTHON***'
>>> '{:.15}'.format('PYTHON OBJECT ORIENTED PROGRAMMING')
'PYTHON OBJECT O'
>>> #Above, truncated 15 characters from the left side of a specified string
>>> '{:.{}}'.format('PYTHON OBJECT ORIENTED',15)
'PYTHON OBJECT O'
>>> #Named Placeholders
>>> data = {'Name':'Raghu', 'Place':'Bangalore'}
>>> '{Name} {Place}'.format(**data)
'Raghu Bangalore'
>>> #Datetime
>>> from datetime import datetime
>>> '{:%Y/%m/%d.%H:%M}'.format(datetime(2018,3,26,9,57))
'2018/03/26.09:57'
Le stringhe sono Unicode
Stringhe come raccolte di caratteri Unicode immutabili. Le stringhe Unicode offrono l'opportunità di creare software o programmi che funzionano ovunque perché le stringhe Unicode possono rappresentare qualsiasi carattere possibile non solo i caratteri ASCII.
Molte operazioni di I / O sanno solo come trattare i byte, anche se l'oggetto byte si riferisce a dati testuali. È quindi molto importante sapere come scambiare byte e Unicode.
Conversione di testo in byte
La conversione di una stringa in un oggetto byte viene definita codifica. Esistono numerose forme di codifica, le più comuni sono: PNG; JPEG, MP3, WAV, ASCII, UTF-8 ecc. Anche questo (codifica) è un formato per rappresentare audio, immagini, testo, ecc. In byte.
Questa conversione è possibile tramite encode (). Ci vuole la tecnica di codifica come argomento. Per impostazione predefinita, utilizziamo la tecnica "UTF-8".
>>> # Python Code to demonstrate string encoding
>>>
>>> # Initialising a String
>>> x = 'TutorialsPoint'
>>>
>>> #Initialising a byte object
>>> y = b'TutorialsPoint'
>>>
>>> # Using encode() to encode the String >>> # encoded version of x is stored in z using ASCII mapping
>>> z = x.encode('ASCII')
>>>
>>> # Check if x is converted to bytes or not
>>>
>>> if(z==y):
print('Encoding Successful!')
else:
print('Encoding Unsuccessful!')
Encoding Successful!
Converting bytes to text
La conversione dei byte in testo è chiamata decodifica. Questo è implementato tramite decode (). Possiamo convertire una stringa di byte in una stringa di caratteri se sappiamo quale codifica viene utilizzata per codificarla.
Quindi codifica e decodifica sono processi inversi.
>>>
>>> # Python code to demonstrate Byte Decoding
>>>
>>> #Initialise a String
>>> x = 'TutorialsPoint'
>>>
>>> #Initialising a byte object
>>> y = b'TutorialsPoint'
>>>
>>> #using decode() to decode the Byte object
>>> # decoded version of y is stored in z using ASCII mapping
>>> z = y.decode('ASCII')
>>> #Check if y is converted to String or not
>>> if (z == x):
print('Decoding Successful!')
else:
print('Decoding Unsuccessful!') Decoding Successful!
>>>
File I / O
I sistemi operativi rappresentano i file come una sequenza di byte, non come testo.
Un file è una posizione denominata su disco in cui memorizzare le informazioni correlate. Viene utilizzato per archiviare in modo permanente i dati nel disco.
In Python, un'operazione sui file viene eseguita nel seguente ordine.
- Apri un file
- Leggere o scrivere su un file (operazione) Aprire un file
- Chiudi il file.
Python avvolge il flusso di byte in entrata (o in uscita) con chiamate di decodifica (o codifica) appropriate in modo da poter gestire direttamente gli oggetti str.
Apertura di un file
Python ha una funzione incorporata open () per aprire un file. Questo genererà un oggetto file, chiamato anche handle poiché viene utilizzato per leggere o modificare il file di conseguenza.
>>> f = open(r'c:\users\rajesh\Desktop\index.webm','rb')
>>> f
<_io.BufferedReader name='c:\\users\\rajesh\\Desktop\\index.webm'>
>>> f.mode
'rb'
>>> f.name
'c:\\users\\rajesh\\Desktop\\index.webm'
Per leggere il testo da un file, dobbiamo solo passare il nome del file alla funzione. Il file verrà aperto per la lettura ei byte verranno convertiti in testo utilizzando la codifica predefinita della piattaforma.