Menu Zamknij

Porównaj styl pisarzy część 4 – Łączenie tekstowego typu danych, string

Naszym celem jest policzenie częstości występowania trzech kolejnych słów. Żeby takie trójki słów policzyć, trzeba je ze tekstu wydobyć. Zacznijmy od wyciągnięcia pojedynczych słów.

Przykład danych tekstowych z poprzedniej części zawiera 11 słów („To wszystko, co chcę opisać, zaczęło się w pierwszych dniach stycznia.”). Można by się pokusić o przypisanie każdego słowa do osobnej zmiennej, a potem połączeniu 3 zmiennych w kolejną, już składającą się z 3 słów, ale to nie jest dobre podejście. Wyobraźcie sobie tekst, który ma 10 000 słów! Dodajmy zatem do naszej wiedzy kolejny typ danych, listę. Listę umieszczasz między kwadratowymi nawiasami „[]„, a każdy element listy oddzielany jest przecinkiem. Jedna lista może zawierać dane typu tekstowego, liczbowego itd., dlatego nie zapomnij o cudzysłowie gdy podajesz dane tekstowe. Przykładem listy może być spis seriali do obejrzenia:
["Wataha", "Wiedźmin", "Narcos"]. Napiszmy program, w którym zadeklarujemy zmienną o nazwie seriale z wartościami z poprzedniego zdania. Następnie sprawdźmy działania funkcji print(), type() i len() na naszej liście:

seriale = ['Wataha', 'Wiedźmin', 'Narcos']

print(seriale)
print(type(seriale))
print(len(seriale))
===================== RESTART: F:/python38/zmienna lista.py ====================
['Wataha', 'Wiedźmin', 'Narcos']
<class 'list'>
3
>>> 

Funkcja print() wydrukowała wszystkie elementy listy zaznaczając pojedynczym cudzysłowem, że każdy jest tekstem:
['Wataha', 'Wiedźmin', 'Narcos']
funkcja type() potwierdziła, że mamy do czynienia z listą:
<class 'list'>
natomiast funkcja len() nie podała długości znaków, ale liczbę elementów listy. Trzy wartości oddzielone przecinkiem, trzy seriale, trzy elementy:
3

Elementy listy można łatwo połączyć w string za pomocą funkcji separator .join(). Separatorem może być dowolny string. Przetestuj takie przykłady:

seriale = ['Wataha', 'Wiedźmin', 'Narcos']

wszystkie_seriale = " ".join(seriale)
print("String rozdzielany spacjami:")
print(wszystkie_seriale)
wszystkie_seriale = "-".join(seriale)
print("\nString rozdzielany minusami:")
print(wszystkie_seriale)
wszystkie_seriale = "_".join(seriale)
print("\nString rozdzielany podkreślnikami:")
print(wszystkie_seriale)

I popatrz na efekt:

===================== RESTART: F:/python38/zmienna lista.py ====================
String rozdzielany spacjami:
Wataha Wiedźmin Narcos

String rozdzielany minusami:
Wataha-Wiedźmin-Narcos

String rozdzielany podkreślnikami:
Wataha_Wiedźmin_Narcos
>>> 

Wydarzyło się tu kilka rzeczy.

Po pierwsze, jeśli pod zmienną o tej samej nazwie po raz kolejny podstawiasz wartość, to nadpisuje ona poprzednią wartość dla tej zmiennej. W programie mamy jedną zmienną „wszystkie_seriale”. Za pierwszym razem, w 3 linijce podstawiasz pod nią efekt działania funkcji .join(), która łączy elementy listy w tekst rozdzielany spacjami, i tekst jest drukowany. Za drugim razem, w 6 linijce zmieniasz zdanie i pod tą samą zmienną „wszystkie_seriale” podstawiasz tekst rozdzielany minusami. Za trzecim razem, w 9 linijce, są to podkreślniki. Trzy razy drukujesz tą samą zmienną i za każdym razem dostajesz inny wynik.

Po drugie w 7 i 10 linijce na początku stringa do wydrukowania pojawia się \n. Pewnie zastanawiasz się czemu \n się nie pokazuje w efektach działania programu. Backshlash (po polsku ukośnik wsteczny) ma specjalne znaczenie dla danych typu string. Backshlash to tak zwany escape character (po polsku znak modyfikacji lub ucieczki) i w połączeniu z literą ma specjalne znaczenie. Kilka przydatnych przykładów przetestujemy w praktyce:

  • \n – nowa linia
  • \t – tabulacja
  • \’ – pojedynczy cudzysłów
  • \” – podwójny cudzysłów
  • \\ – backslash
nowa_linia = "Jak zacząć pisanie od\n nowej linijki?"
tabulacja = "Chcę mieć ostatnie słowo po znaku\t tabulacji!"
pojedynczy_cudzyslow = 'Przecież string może być między \'\'.'
podwojny_cudzyslow = "Jak napisać coś w \"cudzysłowie\"?"
backslash = "Pliki znajdują się w katalogu C:\\python\\pliki\\"

print(nowa_linia)
print(tabulacja)
print(pojedynczy_cudzyslow)
print(podwojny_cudzyslow)
print(backslash)

I obejrzyjmy efekt:

======================== RESTART: F:/python38/wpis 4.py ========================
Jak zacząć pisanie od
 nowej linijki?
Chcę mieć ostatnie słowo po znaku	 tabulacji!
Przecież string może być między ''.
Jak napisać coś w "cudzysłowie"?
Pliki znajdują się w katalogu C:\python\pliki\
>>> 

Podsumowanie

Umiesz już tworzyć listy, łączyć elementy listy w string i wstawiać między te elementy dowolny znak. Wiesz też jak w string wstawić znaki, które dla Pythona mają wiele znaczeń – „, ’, \. W następnym rozdziale zajmiesz się dzieleniem tekstu i zapisaniem go w postaci listy.

Zadanie domowe

Podążanie za instrukcjami, nawet jeśli je wszystkie wykonujesz samodzielnie, nie zrobi z ciebie programisty. Zadania domowe mogą wydawać się na początku trudne. Tu nie ma rozwiązania podanego na talerzu, użyj dowolnych źródeł, by znaleźć odpowiedź.

  1. Jak pisałem na początku tego rozdziału, lista może składać się z różnego typu danych, a czy może składać się z innych list? Spróbuj przygotować listę, w której znajdzie się liczba, string, i lista trzech pierwszych liter alfabetu. Jaka będzie długość listy?
  2. Do listy można dodać kolejny element za pomocą metody. Dla ułatwienia przyjmijmy, że metoda pojawia się po zmiennej i zaczyna się od kropki. Np. jeśli zmienna nazywa się zadanie_domowe, metoda nazywa się przykladowa_metoda(), to by użyć metody na zmiennej napiszesz zadanie_domowe.przykladowa_metoda(). Stwórz dowolną listę, za pomocą odpowiedniej metody dodaj do niej kolejny element, wydrukuj listę, sprawdź jej długość. Czy za pomocą wybranej metody możesz dodać string, liczbę i listę?

5 2 votes
Ocena artykułu

0 komentarzy
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
0
Chcesz podzielić się komentarzem?x