Python Receptury pytrec.pdf

(380 KB) Pobierz
Python. Receptury
IDZ DO
PRZYK£ADOW Y ROZDZIA£
Python. Receptury
SPIS TREŒCI
KATALOG KSI¥¯EK
Autorzy: Alex Martelli, Anna Martelli
Ravenscroft, David Ascher
T³umaczenie: Wojciech Moch, Marek Pêtlicki
ISBN: 83-246-0214-3
Tytu³ orygina³ u: Python Cookbook
Format: B5, stron: 848
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
Python zosta³ opracowany na pocz¹tku lat "90 i szybko zyska³ uznanie programistów.
Elastyczny i uniwersalny, pozwala³ na stosowanie zasad programowania obiektowego,
strukturalnego i funkcyjnego. By³ i nadal jest wykorzystywany nie tylko do tworzenia
skryptów, ale równie¿ przy du¿ych projektach, takich jak na przyk³ad serwer aplikacji
Zope. Decyduj¹c siê na korzystanie z Pythona, stajemy siê czêœci¹ niezwyk³ej
spo³ecznoœci programistów, chêtnie pomagaj¹cej ka¿demu, kto chce doskonaliæ
umiejêtnoœæ pos³ugiwania siê tym jêzykiem.
Ksi¹¿ka „Python. Receptury” to zbiór rozwi¹zañ problemów, z jakimi w codziennej pracy
borykaj¹ siê programiœci korzystaj¹cy z tego jêzyka. Materia³y do niej przygotowa³o
ponad 300 cz³onków spo³ecznoœci Pythona odpowiadaj¹cych na pytania zadawane
na forum internetowym. Rozwi¹zania zosta³y przetestowane w praktyce, co u³atwia ich
zaimplementowanie we w³asnych projektach.
W ksi¹¿ce umówiono m.in.:
Przetwarzanie tekstów
Operacje na plikach
Programowanie obiektowe
Przeszukiwanie i sortowanie
£¹czenie skryptów z bazami danych
Testowanie i usuwanie b³êdów
Programowanie wielow¹tkowe
Realizacjê zadañ administracyjnych
Obs³ugê interfejsów u¿ytkownika
Tworzenie aplikacji sieciowych
Przetwarzanie dokumentów XML
Ka¿dy programista Pythona, niezale¿nie od umiejêtnoœci,
znajdzie w tej ksi¹¿ce coœ dla siebie
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
ONOWOŒCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
454079181.002.png 454079181.003.png 454079181.004.png 454079181.005.png
Wstęp ........................................................................................................................................15
Rozdział 1. Tekst .......................................................................................................................31
1.1. Przetwarzanie tekstu po jednym znaku 37
1.2. Konwersja pomiędzy znakami a kodami numerycznymi 38
1.3. Sprawdzanie, czy obiekt jest podobny do ciągu znaków 39
1.4. Wyrównywanie ciągów znaków 41
1.5. Usuwanie spacji z końców ciągu znaków 42
1.6. Łączenie ciągów znaków 42
1.7. Odwracanie kolejności słów lub znaków w ciągu znaków 45
1.8. Sprawdzanie, czy ciąg znaków zawiera pewien zestaw znaków 47
1.9. Upraszczanie użycia metody translate 50
1.10. Filtrowanie ciągu znaków na podstawie znaków z określonego zbioru 52
1.11. Sprawdzanie, czy ciąg znaków jest tekstowy czy binarny 55
1.12. Kontrolowanie wielkości znaków 57
1.13. Odczytywanie podciągów 58
1.14. Zmiany wcięć w wielowierszowym ciągu znaków 61
1.15. Rozszerzanie i zawężanie tabulacji 63
1.16. Wstawianie zmiennych do ciągu znaków 65
1.17. Wstawianie zmiennych do ciągu znaków w Pythonie 2.4 67
1.18. Podmiana wielu wzorców w jednym przebiegu 69
1.19. Sprawdzanie końcówek w ciągu znaków 72
1.20. Obsługa tekstów międzynarodowych za pomocą Unikodu 73
1.21. Konwertowanie pomiędzy Unikodem i prostym tekstem 76
1.22. Wypisywanie znaków Unikodu na standardowe wyjście 78
1.23. Kodowanie danych w formatach XML i HTML 79
1.24. Przygotowanie ciągu znaków nierozróżniającego wielkości liter 82
1.25. Konwertowanie dokumentów HTML na zwykły tekst na terminalu uniksowym 85
3
454079181.001.png
Rozdział 2. Pliki ....................................................................................................................... 89
2.1. Czytanie z pliku 93
2.2. Zapisywanie do pliku 97
2.3. Wyszukiwanie i podmiany tekstu w pliku 98
2.4. Odczytanie z pliku określonego wiersza 99
2.5. Zliczanie wierszy w pliku 100
2.6. Przetwarzanie wszystkich słów z pliku 103
2.7. Wejście i wyjście o dostępie swobodnym 105
2.8. Aktualizowanie pliku o dostępie swobodnym 106
2.9. Odczytywanie danych z plików .zip 108
2.10. Obsługa plików .zip wewnątrz ciągu znaków 110
2.11. Archiwizowanie drzewa plików w skompresowanym pliku .tar 111
2.12. Wysyłanie danych binarnych na standardowe wyjście w systemach Windows 113
2.13. Stosowanie składni podobnej do składni obiektów iostream z języka C++
114
2.14. Przewijanie pliku wejściowego do początku
115
2.15. Przystosowywanie obiektów plikopodobnych
do obiektów rzeczywistych plików 118
2.16. Przeglądanie drzew katalogów 119
2.17. Zamiana jednego rozszerzenia plików na inne w całym drzewie katalogów 121
2.18. Wyszukiwanie pliku na podstawie ścieżki wyszukiwania 122
2.19. Wyszukiwanie plików na postawie ścieżki wyszukiwania i wzorca 123
2.20. Wyszukiwanie plików zgodnie ze ścieżką wyszukiwania Pythona 124
2.21. Dynamiczne modyfikowanie ścieżki wyszukiwania Pythona 125
2.22. Wyznaczanie ścieżki względnej z jednego katalogu do drugiego 127
2.23. Odczytywanie znaków niebuforowanych w sposób niezależny od platformy 129
2.24. Zliczanie stron dokumentów PDF w systemie Mac OS X
130
2.25. Modyfikowanie atrybutów plików w systemach Windows
131
2.26. Pobieranie tekstu z dokumentów OpenOffice.org
132
2.27. Pobieranie tekstu z dokumentów Microsoft Word
133
2.28. Blokowanie plików za pomocą międzyplatformowego API
134
2.29. Wersjonowanie nazw plików
136
2.30. Wyliczanie sum kontrolnych CRC-64
138
Rozdział 3. Czas i pieniądz .................................................................................................... 141
3.1. Wyliczanie dnia jutrzejszego i wczorajszego
147
3.2. Którego był ostatni piątek?
149
3.3. Wyliczanie przedziału czasu i zakresu dat
151
3.4. Sumowanie czasów trwania piosenek
152
3.5. Wyznaczanie liczby dni roboczych pomiędzy dwoma datami
153
3.6. Automatyczne wyznaczanie dat świąt
155
3.7. Elastyczne odczytywanie dat
158
4
Spis treści
3.8. Sprawdzanie, czy aktualnie mamy czas letni czy zimowy
159
3.9. Konwersja stref czasowych
160
3.10. Powtarzanie wywołania polecenia
162
3.11. Tworzenie terminarza poleceń
163
3.12. Arytmetyka dziesiętna
165
3.13. Formatowanie liczb dziesiętnych jako waluty
167
3.14. Python jako prosta maszyna sumująca
170
3.15. Sprawdzanie sumy kontrolnej karty kredytowej
173
3.16. Sprawdzanie kursów wymiany walut
174
Rozdział 4. Skróty ................................................................................................................... 177
4.1. Kopiowanie obiektu
179
4.2. Konstruowanie list za pomocą list składanych
182
4.3. Zwracanie elementu listy, o ile istnieje
184
4.4. Przeglądanie w pętli elementów sekwencji i ich indeksów
185
4.5. Tworzenie list bez współdzielenia referencji
186
4.6. Spłaszczanie zagnieżdżonej sekwencji
188
4.7. Usuwanie lub przestawianie kolumn na liście wierszy
191
4.8. Transponowanie tablic dwuwymiarowych
192
4.9. Pobieranie wartości ze słownika
194
4.10. Dodawanie pozycji do słownika
196
4.11. Budowanie słownika bez nadużywania cudzysłowów
197
4.12. Budowanie słownika na podstawie listy kluczy i wartości
199
4.13. Wydobywanie podzbioru elementów słownika
201
4.14. Odwracanie słownika
203
4.15. Wiązanie kilku wartości z kluczami słownika
204
4.16. Stosowanie słowników do wywoływania metod lub funkcji
206
4.17. Wyszukiwanie sum i części wspólnych słowników
208
4.18. Kolekcja elementów nazwanych
210
4.19. Przypisywanie i testowanie za pomocą jednej instrukcji
212
4.20. Stosowanie w Pythonie instrukcji printf
214
4.21. Losowe wybieranie elementów z zadanym prawdopodobieństwem
215
4.22. Obsługiwanie wyjątków wewnątrz wyrażeń
217
4.23. Sprawdzanie, czy nazwa jest zdefiniowana w danym module
219
Rozdział 5. Szukanie i sortowanie ....................................................................................... 221
5.1. Sortowanie słownika 226
5.2. Sortowanie listy ciągów znaków bez uwzględniania wielkości liter 227
5.3. Sortowanie listy obiektów na podstawie ich atrybutów 229
5.4. Sortowanie kluczy lub indeksów na podstawie związanych z nimi wartości 231
5.5. Sortowanie ciągów znaków zawierających liczby
234
Spis treści
5
5.6. Przetwarzanie wszystkich elementów listy w kolejności losowej
235
5.7. Utrzymywanie porządku w sekwencji
w czasie dodawania do niej nowych elementów
237
5.8. Pobieranie kilku najmniejszych elementów sekwencji
239
5.9. Wyszukiwanie elementów w sekwencji posortowanej
241
5.10. Wybieranie n-tego najmniejszego elementu w sekwencji
243
5.11. Algorytm quicksort w trzech wierszach kodu
246
5.12. Wykonywanie częstych testów obecności elementów sekwencji
249
5.13. Wyszukiwanie podsekwencji
251
5.14. Wzbogacanie typu dict o możliwość wprowadzania ocen
253
5.15. Sortowanie nazwisk i rozdzielanie ich za pomocą inicjałów
257
Rozdział 6. Programowanie obiektowe .............................................................................. 259
6.1. Konwertowanie między skalami temperatury
266
6.2. Definiowanie stałych
268
6.3. Ograniczanie dodawania atrybutów
270
6.4. Łączenie wyszukiwań danych w słowniku
272
6.5. Automatyczne delegacje jako alternatywa dla dziedziczenia
274
6.6. Delegowanie metod specjalnych w obiektach proxy
277
6.7. Implementowanie krotek z nazywanymi elementami
280
6.8. Unikanie stosowania powtarzalnych metod dostępu do właściwości
282
6.9. Tworzenie szybkiej kopii obiektu
284
6.10. Przechowywanie referencji metod powiązanych
bez wstrzymywania mechanizmu oczyszczania pamięci
286
6.11. Implementowanie bufora cyklicznego
289
6.12. Wykrywanie dowolnych zmian stanu egzemplarza
292
6.13. Sprawdzanie, czy obiekt ma wymagane atrybuty
295
6.14. Implementowanie wzorca Projektu Stanu
299
6.15. Implementowanie wzorca projektowego Singleton
301
6.16. Zastępowanie wzorca projektowego Singleton idiomem Borg
302
6.17. Implementowanie wzorca projektowego Obiektu Zerowego
307
6.18. Automatyczne inicjowanie zmiennych egzemplarzy
na podstawie argumentów metody __init__ 310
6.19. Wywoływanie metody __init__ w klasie bazowej, jeśli taka metoda istnieje 312
6.20. Spójne i bezpieczne kooperatywne wywołania metod w klasach nadrzędnych 315
Rozdział 7. Trwałość danych i bazy danych ..........................................................................317
7.1. Serializowanie danych za pomocą modułu marshal
320
7.2. Serializowanie danych za pomocą modułów pickle i cPickle
322
7.3. Stosowanie kompresji w połączeniu z serializacją
325
7.4. Wykorzystanie modułu cPickle wobec klas i ich egzemplarzy
326
6
Spis treści
Zgłoś jeśli naruszono regulamin