15. Lektion: Stringbearbeitung

Aus Micropython Referenz
Zur Navigation springen Zur Suche springen

String Methoden[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

Formatierung[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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

.format()-Formatierung[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]
  • Erstelle einen String in den die Worte "Attraktor", "Micropython" und "lernen" mit der .format() Methode eingefügt werden.


Erweiterte Formatanweisungen[Bearbeiten | Quelltext bearbeiten]

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:[Bearbeiten | Quelltext bearbeiten]
:< 	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:[Bearbeiten | Quelltext bearbeiten]
  • 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[Bearbeiten | Quelltext bearbeiten]

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:[Bearbeiten | Quelltext bearbeiten]
  • Erstellt ein paar Sätze in die Ihr Werte mit der f-string-Methode einfügt.



Zahlen und Texte formatieren:[Bearbeiten | Quelltext bearbeiten]

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:[Bearbeiten | Quelltext bearbeiten]
  • Verwendet die verschiedenen Formatierungen.

Links:[Bearbeiten | Quelltext bearbeiten]


Navigation[Bearbeiten | Quelltext bearbeiten]

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