Python zorientowany obiektowo - pliki i ciągi
Smyczki
Łańcuchy to najpopularniejsze typy danych używane w każdym języku programowania. Czemu? Ponieważ my rozumiemy tekst lepiej niż liczby, więc podczas pisania i mówienia używamy tekstu i słów, podobnie w programowaniu używamy ciągów. W łańcuchach analizujemy tekst, analizujemy semantykę tekstu i wykonujemy eksplorację danych - a wszystkie te dane to tekst konsumowany przez człowieka. Ciąg znaków w Pythonie jest niezmienny.
Manipulacja strunami
W Pythonie ciąg znaków można oznaczyć na wiele sposobów, używając pojedynczego cudzysłowu ('), podwójnego cudzysłowu („) lub nawet potrójnego cudzysłowu (' '') w przypadku ciągów wielowierszowych.
>>> # String Examples
>>> a = "hello"
>>> b = ''' A Multi line string,
Simple!'''
>>> e = ('Multiple' 'strings' 'togethers')
Manipulacja strunami jest bardzo przydatna i szeroko stosowana w każdym języku. Często programiści muszą rozbić łańcuchy i dokładnie je zbadać.
Łańcuchy mogą być iterowane (znak po znaku), krojone lub łączone. Składnia jest taka sama, jak w przypadku list.
Klasa str ma wiele metod ułatwiających manipulowanie napisami. Polecenia dir i help zawierają wskazówki w interpretatorze języka Python, jak ich używać.
Poniżej znajdują się niektóre z powszechnie używanych metod ciągów, których używamy.
Sr.No. | Metoda i opis |
---|---|
1 | isalpha() Sprawdza, czy wszystkie znaki są alfabetami |
2 | isdigit() Sprawdza cyfry |
3 | isdecimal() Sprawdza znaki dziesiętne |
4 | isnumeric() sprawdza znaki numeryczne |
5 | find() Zwraca najwyższy indeks podciągów |
6 | istitle() Sprawdza ciągi z tytułami |
7 | join() Zwraca połączony ciąg |
8 | lower() zwraca napis o małej wielkości |
9 | upper() zwraca ciąg z dużymi literami |
10 | partion() Zwraca krotkę |
11 | bytearray() Zwraca tablicę o podanym rozmiarze bajtu |
12 | enumerate() Zwraca obiekt wyliczenia |
13 | isprintable() Sprawdza znak do wydrukowania |
Spróbujmy uruchomić kilka metod łańcuchowych,
>>> 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')
>>>
Formatowanie ciągów
W Pythonie 3.x formatowanie łańcuchów uległo zmianie, teraz jest bardziej logiczne i bardziej elastyczne. Formatowanie można wykonać za pomocą metody format () lub znaku% (stary styl) w ciągu formatu.
Łańcuch może zawierać tekst literału lub pola zastępcze oddzielone nawiasami klamrowymi {}, a każde pole zastępcze może zawierać indeks numeryczny argumentu pozycyjnego lub nazwę argumentu słowa kluczowego.
składnia
str.format(*args, **kwargs)
Podstawowe formatowanie
>>> '{} {}'.format('Example', 'One')
'Example One'
>>> '{} {}'.format('pie', '3.1415926')
'pie 3.1415926'
Poniższy przykład pozwala na zmianę kolejności wyświetlania bez zmiany argumentów.
>>> '{1} {0}'.format('pie', '3.1415926')
'3.1415926 pie'
Wypełnienie i wyrównywanie ciągów
Wartość można dopełnić do określonej długości.
>>> #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'
Ciągi znaków to Unicode
Ciągi znaków jako kolekcje niezmiennych znaków Unicode. Ciągi Unicode dają możliwość tworzenia oprogramowania lub programów, które działają wszędzie, ponieważ łańcuchy Unicode mogą reprezentować dowolny możliwy znak, a nie tylko znaki ASCII.
Wiele operacji we / wy wie tylko, jak radzić sobie z bajtami, nawet jeśli obiekt bajtów odnosi się do danych tekstowych. Dlatego bardzo ważne jest, aby wiedzieć, jak zamieniać bajty i Unicode.
Konwersja tekstu na bajty
Konwersja ciągów znaków na obiekt bajtowy jest określana jako kodowanie. Istnieje wiele form kodowania, najczęściej są to: PNG; JPEG, MP3, WAV, ASCII, UTF-8 itd. Również to (kodowanie) jest formatem do przedstawiania dźwięku, obrazów, tekstu itp. W bajtach.
Ta konwersja jest możliwa poprzez encode (). Przyjmuje technikę kodowania jako argument. Domyślnie używamy techniki „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
Konwersja bajtów na tekst nazywa się dekodowaniem. Jest to realizowane poprzez decode (). Możemy przekonwertować ciąg bajtów na ciąg znaków, jeśli wiemy, jakie kodowanie jest używane do jego zakodowania.
Zatem kodowanie i dekodowanie są procesami odwrotnymi.
>>>
>>> # 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!
>>>
We / wy pliku
Systemy operacyjne reprezentują pliki jako sekwencje bajtów, a nie tekst.
Plik to nazwana lokalizacja na dysku do przechowywania powiązanych informacji. Służy do trwałego przechowywania danych na dysku.
W Pythonie operacja na plikach odbywa się w następującej kolejności.
- Otworzyć plik
- Odczyt lub zapis do pliku (operacja). Otwórz plik
- Zamknij plik.
Python opakowuje przychodzący (lub wychodzący) strumień bajtów odpowiednimi wywołaniami dekodowania (lub kodowania), dzięki czemu możemy zajmować się bezpośrednio obiektami str.
Otwieranie pliku
Python ma wbudowaną funkcję open () do otwierania pliku. Spowoduje to wygenerowanie obiektu pliku, zwanego także uchwytem, ponieważ jest używany do odpowiedniego odczytu lub modyfikacji pliku.
>>> 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'
Aby odczytać tekst z pliku, musimy tylko przekazać nazwę pliku do funkcji. Plik zostanie otwarty do odczytu, a bajty zostaną przekonwertowane na tekst przy użyciu domyślnego kodowania platformy.