Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einleitung
2 Überblick über Python
3 Die Arbeit mit Python
4 Der interaktive Modus
5 Grundlegendes zu Python-Programmen
6 Kontrollstrukturen
7 Das Laufzeitmodell
8 Basisdatentypen
9 Benutzerinteraktion und Dateizugriff
10 Funktionen
11 Modularisierung
12 Objektorientierung
13 Weitere Spracheigenschaften
14 Mathematik
15 Strings
16 Datum und Zeit
17 Schnittstelle zum Betriebssystem
18 Parallele Programmierung
19 Datenspeicherung
20 Netzwerkkommunikation
21 Debugging
22 Distribution von Python-Projekten
23 Optimierung
24 Grafische Benutzeroberflächen
25 Python als serverseitige Programmiersprache im WWW mit Django
26 Anbindung an andere Programmiersprachen
27 Insiderwissen
28 Zukunft von Python
A Anhang
Stichwort

Download:
- ZIP, ca. 4,8 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Python von Peter Kaiser, Johannes Ernesti
Das umfassende Handbuch - Aktuell zu Python 2.5
Buch: Python

Python
gebunden, mit CD
819 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1110-9
Pfeil 15 Strings
  Pfeil 15.1 Arbeiten mit Zeichenketten – string
    Pfeil 15.1.1 Ein einfaches Template-System
  Pfeil 15.2 Reguläre Ausdrücke – re
    Pfeil 15.2.1 Syntax regulärer Ausdrücke
    Pfeil 15.2.2 Verwendung des Moduls
    Pfeil 15.2.3 Ein einfaches Beispielprogramm – Searching
    Pfeil 15.2.4 Ein komplexeres Beispielprogramm – Matching
  Pfeil 15.3 Lokalisierung von Programmen – gettext
    Pfeil 15.3.1 Beispiel für die Verwendung von gettext
  Pfeil 15.4 Hash-Funktionen – hashlib
    Pfeil 15.4.1 Verwendung des Moduls
    Pfeil 15.4.2 Beispiel
  Pfeil 15.5 Dateiinterface für Strings – StringIO

»Some people, when confronted with a problem, think ›I know, I’ll use regular expressions.‹ Now they have two problems.« – Jamie W. Zawinski

15 Strings

In diesem Kapitel möchten wir einige Module vorstellen, die komfortable Funktionalität bereitstellen, die im engen Zusammenhang mit Strings steht.


Galileo Computing - Zum Seitenanfang

15.1 Arbeiten mit Zeichenketten – string  Zur nächsten ÜberschriftZur vorigen Überschrift

Ursprünglich sollte das Modul string Funktionen enthalten, die zur Manipulation von Strings gedacht waren. Diese wurden jedoch im Laufe der Entwicklung von Python zu Methoden des Datentyps str, und das Modul string wurde damit weitestgehend obsolet. Dennoch enthält das Modul einige wichtige Konstanten und, was weitaus interessanter ist, eine Template Engine, die wir in Abschnitt 15.1.1 behandeln werden. Doch kommen wir zunächst zu den in string definierten Konstanten.

Konstanten

Die im Modul string enthaltenen Konstanten sind allesamt Strings, die Zeichen eines bestimmten Typs enthalten. Auf diese Weise lässt sich einfach testen, ob ein eingelesenes Zeichen dem gewünschten Typ angehört oder ob die Eingabe ungültig war. Besonders interessant wird dies im Hinblick auf Lokalisierungen, denn es gibt Zeichen, die nur in einigen wenigen Sprachen zu den Buchstaben oder Satzzeichen gehören, wie beispielsweise die deutschen Umlaute oder das spanische umgekehrte Fragezeichen.

Beachten Sie, dass sich Konstanten, die auf einer Lokalisierung basieren, automatisch ändern, wenn die Lokalisierung des Betriebssystems geändert wurde.


Tabelle 15.1  Konstanten des Moduls »string«
Wert Bedeutung

ascii_letters

Enthält alle Buchstaben des ASCII-Standards, also alle Buchstaben des englischen Alphabets, jeweils in ihrer großen und kleinen Form.

'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

ascii_lowercase

Wie ascii_letters, jedoch sind nur Kleinbuchstaben enthalten.

'abcdefghijklmnopqrstuvwxyz'

ascii_uppercase

Wie ascii_letters, jedoch sind nur Großbuchstaben enthalten.

'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

digits

Enthält alle Ziffern von 0 bis 9.

'0123456789'

hexdigits

Enthält alle hexadezimalen Ziffern von 0 bis F bzw. f.

'0123456789abcdefABCDEF'

letters

Enthält alle Buchstaben der aktuellen Lokalisierung.

lowercase

Enthält alle Kleinbuchstaben der aktuellen Lokalisierung.

octdigits

Enthält alle oktalen Ziffern von 0 bis 7.

'01234567'

punctuation

Enthält alle Satzzeichen der aktuellen Lokalisierung.

'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

printable

Enthält alle druckbaren Zeichen. Das ist eine Kombination aus digits, letters, punctuation und whitespace.

uppercase

Enthält alle Großbuchstaben der aktuellen Lokalisierung.

whitespace

Enthält alle Whitespace-Zeichen wie beispielsweise ein Tabulator- oder ein Leerzeichen.

'\t\n\x0b\x0c\r '

Eingangs wurde bereits erwähnt, für welchen Zweck die aufgelisteten Konstanten gedacht sind. Im folgenden Beispiel soll ihre Verwendung demonstriert werden:

import string
c = raw_input("Ein englischer Kleinbuchstabe bitte: ") if len(c) != 1: print "Ein Buchstabe, kein Roman" elif c not in string.ascii_lowercase: print "Falsche Eingabe"

Nachdem eine Eingabe vom Benutzer gefordert wurde, wird sie auf ihre Länge geprüft, und anschließend wird getestet, ob der Buchstabe in string.ascii_lowercase enthalten ist.


Galileo Computing - Zum Seitenanfang

15.1.1 Ein einfaches Template-System  topZur vorigen Überschrift

Abgesehen von den soeben besprochenen Konstanten enthält das Modul string die Klasse Template, die ein simples Template-System darstellt. Ein solches Template-System ermöglicht es, einen String mit Platzhaltern zu versehen und diese später durch dynamisch erstellte Werte aufzufüllen.

Im Grunde genommen kann Pythons %-Syntax auch als Template-System angesehen werden:

>>> "%s ist %s" % ("Python", "gut") 
'Python ist gut'

Diese Syntax ist an C angelehnt und sehr mächtig. Das Ziel der Template-Klasse dagegen ist es, ein möglichst einfaches Template-System zu implementieren, das zwar in seinem Funktionsumfang und seiner Flexibilität stark eingeschränkt, dafür aber sehr einfach zu benutzen ist.

Bei der Instanziierung der Template-Klasse wird der String mit den Platzhaltern übergeben:

>>> from string import Template 
>>> t = Template("$was ist $wie")

Ein Platzhalter wird im String durch ein Dollar-Zeichen und einen darauf folgenden Bezeichner gekennzeichnet. In diesem Fall wurden die Platzhalter $was und $wie eingebettet.

Durch Aufruf der Methode substitute einer Template-Instanz können die Platzhalter durch Werte ersetzt werden:

>>> t.substitute(was="Python", wie="gut") 
'Python ist gut' 
>>> t.substitute(wie="mittel", was="Java") 
'Java ist mittel'

Als Parameter der Methode substitute können beliebig viele keyword arguments übergeben werden, die jeweils dem Namen des Platzhalters entsprechen müssen. Zudem ist es möglich, der Methode ein Dictionary zu übergeben, das die Namen der Platzhalter und die einzutragenden Werte als Schlüssel/Wert-Paare enthält.

Die Instanzen, durch die die Platzhalter ersetzt werden, müssen keineswegs ausschließlich Strings sein, wie folgendes Beispiel zeigt:

>>> t.substitute(was=[1,2,3], wie=23) 
'[1, 2, 3] ist 23'

Neben substitute existiert eine weitere Methode namens safe_substitute, die über die gleiche Schnittstelle wie substitute verfügt. Der Unterschied zwischen den beiden Methoden ist der, dass substitute eine Exception wirft, wenn bei einem Aufruf ein Platzhalter nicht ersetzt wird, während safe_substitute einen solchen Umstand schlicht ignoriert.

>>> t.substitute(was="Python") 
Traceback (most recent call last): 
  […] 
KeyError: 'wie' 
>>> t.safe_substitute(was="Python") 
'Python ist $wie'

Abschließend noch zwei Bemerkungen zu den Platzhaltern im String. Betrachten Sie einmal folgendes Beispiel:

>>> t = Template("Alles Gute zum $gebten Geburtstag")

Der Platzhalter heißt eigentlich nur $geb, wird aber direkt von weiterem Text im String gefolgt, sodass der Name unglücklicherweise zu $gebten wird. Für solche Fälle ist es möglich, den Bezeichner des Platzhalters in geschweifte Klammern zu fassen:

>>> t = Template("Alles Gute zum ${geb}ten Geburtstag") 
>>> t.substitute(geb=21) 
'Alles Gute zum 21ten Geburtstag'

Problematisch ist außerdem, dass das Dollar-Zeichen sozusagen belegt ist, sodass Sie es nicht einfach so innerhalb des Strings verwenden können. Dieses Problem können Sie folgendermaßen umschiffen:

>>> t = Template("Python kostet $preis$$") 
>>> t.substitute(preis=0) 
'Python kostet 0$'

Ein doppeltes Dollar-Zeichen wird im fertigen String durch ein einzelnes Dollar-Zeichen ersetzt.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  
  Zum Katalog
Zum Katalog: Python






Python
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Linux






 Linux


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


Zum Katalog: Praxisbuch Web 2.0






 Praxisbuch Web 2.0


Zum Katalog: UML 2.0






 UML 2.0


Zum Katalog: Praxisbuch Objektorientierung






 Praxisbuch Objektorientierung


Zum Katalog: Einstieg in SQL






 Einstieg in SQL


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für Fachinformatiker


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de