15. Lektion: Stringbearbeitung

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche

String Methoden

Die Klasse String enthält eine ganze Reihe von Methoden die einen komfortablen Umgang mit Strings ermöglichen. Der Umfang an Methoden ist bei Micropython reduziert.

>>> dir(str)
['__class__', '__name__', 'count', 'endswith', 'find', 'format', 'index', 
'isalpha', 'isdigit', 'islower', 'isspace', 'isupper', 'join', 'lower', 'lstrip', 
'replace', 'rfind', 'rindex', 'rsplit', 'rstrip', 'split', 'startswith', 'strip', 
'upper', '__bases__', '__dict__', 'center', 'encode', 'partition', 
'rpartition', 'splitlines']
>>> 

Groß- und Kleinschreibung

Zum Umwandelt von Texten in Groß- oder Kleinschreibung gibt es die Methoden upper() und lower():

>>> hallo = 'Hallo'
>>> hallo_klein = hallo.lower()
>>> hallo_klein
    'hallo'
>>> hallo_gross = hallo.upper()
>>> hallo_gross
    'HALLO'
>>> 

Es läßt sich auch prüfen, ob ein Text groß oder klein geschrieben ist. Wenn sowohl Groß- als auch Kleinbuchstaben enthalten sind werden beide Abfragen False.

>>> text = 'Hallo'
>>> text.isupper()
    False
>>> text.islower()
    False
>>> text.lower().islower()
    True
>>> text.upper().islower()
    False
>>> 

Von Whitespaces befreien

Mit strip kann man Whitespaces aus Strings entfernen.

>>> text_form = '    Hallo    '
>>> text_form
'    Hallo    '
>>> text_form.strip()
'Hallo'
>>> text_form.lstrip()
'Hallo    '
>>> text_form.rstrip()
'    Hallo'
>>>  

Texte ausrichten

Zum Ausrichten von Texten steht in Micropython nur die center-Methode zur Verfügung. Als Parameter wird die Größe des Feldes angegeben in dem der Text zentriert werden soll.

>>> text = 'Hallo'
>>> text.center(20)
'       Hallo        '

Sätze in Worte zerteilen

Mit split lässt sich ein Satz in seine einzelnen Wörter zerteilen. Dabei entsteht eine Liste.

>>> text = 'Hallo, Micropython ist ganz toll!'
>>> wort_liste = text.split()
>>> wort_liste
    ['Hallo,', 'Micropython', 'ist', 'ganz', 'toll!']
>>> 

Sätze aus Worten zusammensetzen

Mit join kann aus einer Liste von Worten ein Satz zusammengesetzt werden. Als Ausgangsstring wird das Trennzeichen zwischen den Worten verwendet.

>>> ' '.join(wort_liste)
    'Hallo, Micropython ist ganz toll!'
>>> 

Praktisch ist es auch bei Zeitangaben:

>>> stunde = '7'
>>> minute = '25'
>>> sekunde = '38'
>>> ':'.join([stunde, minute, sekunde])
    '7:25:38'
>>> 

Texte mit Werten auffüllen

Formatierung

Es gibt in Python 3 Arten Texte zu formatieren. In diesem Fall bedeutet das, Einfügen von Werten in einen bestehenden Text. Davon stehen in Micropython nur die 2 älteren Methoden zur Verfügung. Die neueste, f-Formatierung genannt, gibt es in Micropython noch nicht. Bei Internetsuchen zur Formatierung in Python stößt man inzwischen meist auf die f-Formatierung. Das ist für Micropython wenig hilfreich. Deshalb ist es sinnvoller nach %-Formatierung oder .format() zu suchen.

sprache = 'Micropython'
eigenschaft = 'einfach'

# Die Komma-Methode:
print('Die Sprache',sprache,'ist',eigenschaft,'zu lernen.')

# Die %-Methode:
print('Die Sprache %s ist %s zu lernen.'%(sprache, eigenschaft))

# Die .format-Methode:
print('Die Sprache {} ist {} zu lernen.'.format(sprache, eigenschaft))

# Die f-string-Methode:
print(f'Die Sprache {sprache} ist {eigenschaft} zu lernen.')

%-Formatierung

Dieses ist die älteste Formatierung von Python. Deshalb werde ich darauf nicht weiter eingehen,

.format()-Formatierung

Bei dieser Art der Formatierung wird als Platzhalter im Text {} eingesetzt. .format() ist eine Methode der Klasse string. Die einzusetzten Werte werden in der richtigen Reihenfolge als Parameter übergeben.

>>> text = 'Hallo {}, schön das Du da bist'.format('Peter')
>>> text
'Hallo Peter, sch\xf6n das Du da bist'
>>> print(text)
Hallo Peter, schön das Du da bist
>>> 
Übung
  • Erstelle einen String in den die Worte "Attraktor", "Micropython" und "lernen" mit der .format() Methode eingefügt werden.


Erweiterte Formatanweisungen

Es gibt weitere Möglichkeiten die eingefügten Werte zu formatieren.
Dazu werden Formatierungsanweisungen in die {} eingetragen.
Diese Anweisungen werden mit einem : eingeleitet
Z.B:

>>> 'Hallo, {:5s} Hallo.'.format('a')
    'Hallo, a     Hallo.'
>>> 'Hallo, {:>5s} Hallo.'.format('a')
    'Hallo,     a Hallo.'
>>> 'Der Wert ist {:5.2f}'.format(3.1456)
    'Der Wert ist  3.15'


Liste der erweiterten Formatierungsanweisungen:
:< 	Links ausgerichtet im verfügbaren Bereich.
:> 	Rechts ausgerichtet im verfügbaren Bereich.
:^ 	Zentriert im verfügbaren Bereich.
:= 	Plaziere das Vorzeichen ganz links aussen.
:+ 	Verwende ein Pluszeichen, um anzugeben, ob das Ergebnis positiv oder negativ ist.
:- 	Verwenden ein Minuszeichen, wenn das Ergebnis negativ ist.
:  	Verwende vor positiven Zahlen ein zusätzliches Leerzeichen und ein Minuszeichen vor negativen Zahlen.
:, 	Verwende ein Komma also tausender Seperator.
:_ 	Verwende ein Unterstrich also tausender Seperator. (nicht in Micropython)
:b 	Binär Format
:c 	Wandle das Zeichen in den entsprechende Unicode Wert.
:d 	Dezimal Format
:e 	Wissenschaftliches Format mit "e"
:E 	Wissenschaftliches Format mit "E"
:f 	Festkomma Zahlenformat in Kleinbuchstaben.
:F 	Festkomma Zahlenformat in Großbuchstaben (show inf and nan as INF and NAN).
:g 	Allgemeines Format
:G 	Allgemeines Format (verwende ein E für Wissenschaftliches Format)
:o 	Oktal Format
:x 	Hex Format, Kleinbuchstaben
:X 	Hex Format, Großbuchstaben
:n 	Zahlen Format
:% 	Prozent Format

Hier noch ein paar weiter Anwendungen:

>>> txt1 = "My name is {fname}, I'm {age}".format(fname = "John", age = 36)
>>> txt2 = "My name is {0}, I'm {1}".format("John",36)
>>> txt3 = "My name is {}, I'm {}".format("John",36) 
>>> txt3 = "My name is {}, I'm {:5}".format("John",36) 
>>> txt3
    "My name is John, I'm    36"
>>> txt3 = "My name is {}, I'm {:5.2}".format("John",36) 
>>> txt3
    "My name is John, I'm    36"
>>> txt3 = "My name is {}, I'm {:5.2f}".format("John",36) 
>>> txt3
    "My name is John, I'm 36.00"
>>> 
Übung:
  • Sucht Euch ein paar Formatierungsanweisung heraus und probiert diese aus.
  • Teste, ob die Definition von txt1 auch funktioniert, wenn die Parameter in format() vertauscht werden.


f.string

Seit Python 3.6 gibt es auch die f-String Formatierung. Inzwischen ist diese auch in Micropython implementiert.
Die f-string Methode ist die übersichtlichste Form der Formatierung in Python.

Hier ein einfaches Beispiel:

>>> sprache = 'Micropython'
>>> eigenschaft = 'einfach'

>>> ausgabe = f'Die Sprache {sprache} ist {eigenschaft} zu lernen'
>>> print(ausgabe)
    Die Sprache Micropython ist einfach zu lernen
>>> 

Es geht auch komplizierter:

>>> durchmesser = 10
>>> f'Durchmesser = {durchmesser} und Fläche = {durchmesser ** 2 * 3.14 / 4}'
    'Durchmesser = 10 und Fl\xe4che = 78.5'
>>> print(f'Durchmesser = {durchmesser} und Fläche = {durchmesser ** 2 * 3.14 / 4}')
    Durchmesser = 10 und Fläche = 78.5
>>> 
Übung:
  • Erstellt ein paar Sätze in die Ihr Werte mit der f-string-Methode einfügt.



Zahlen und Texte formatieren:

Es gelten hier auch die erweiterten Formatierungszeichen der .format() Methode.

>>> zahl = 42
    print (f'{zahl:<4}' )
    42  

>>> print (f'{zahl:_<4}')
    42__

>>> print (f'{zahl:0>4}')
    0042

>>> print (f'{zahl:04d}')
    0042

>>> print(f'{zahl=:0>4}')
    zahl=0042

>>> grösse=1.827
    print(f'{grösse:.5f}')
    1.82700

>>> print(f'{grösse:.2f}')
    1.83

>>> print (f'{grösse:0>12.5f}')
    000001.82700

>>> x = 1000000
    print(f'{x:,}')    # nur ',' und '_' möglich
    1,000,000

>>> x = 42
>>> print(f'{x:5.2f}')
    42.00
>>> 

Aber dieses funktioniert in Micropython nicht:

>>> variable = 'Hallo'

>>> print(f"{variable= }")
Traceback (most recent call last):
  File "<stdin>", line 1
SyntaxError: invalid syntax

>>> print(f"{variable = }")
Traceback (most recent call last):
  File "<stdin>", line 1
SyntaxError: invalid syntax

>>> print(f"{variable = :}")
Traceback (most recent call last):
  File "<stdin>", line 1
SyntaxError: invalid syntax

>>> print(f"{variable = :s}")
Traceback (most recent call last):
  File "<stdin>", line 1
SyntaxError: invalid syntax

In Python 3.10 funktioniert es:

>>> variable = 'Hallo'

>>> print(f"{variable= }")
    variable= 'Hallo'

>>> print(f"{variable = }")
    variable = 'Hallo'
>>> 


Übung:
  • Verwendet die verschiedenen Formatierungen.

Links:


Navigation

Zurück zu Micropython Kurs 2023 - Teil 1
Zurück zur "Micropython Kurs 2023" Startseite
Zurück zur Programmieren Startseite
Zurück zur Wiki Startseite

Diese Seite wurde zuletzt am 13. Januar 2024 um 08:45 Uhr geändert. Diese Seite wurde bisher 5.480 mal abgerufen.