15. Lektion: Stringbearbeitung
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.
- https://realpython.com/python-f-strings/?utm_source=notification_summary&utm_medium=email&utm_campaign=2023-10-19
- https://tirsus.com/strings-formatieren-in-python/#:~:text=So%20einfach%20ist%20das%3A%20mit,in%20der%20Zeichenkette%20einsetzen%20soll.&text=Oftmals%20wollen%20wir%20Zahlen%20f%C3%BCr,unterst%C3%BCtzen%20uns%20die%20f%2DStrings.
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]
- https://user.phil.hhu.de/~seyffarth/classes/python2020/10-01%20String%20Formatting.html
- https://medium.com/@CodeMaple/variables-data-types-in-python-python-basics-dbfb234c90d6
- https://pub.towardsai.net/programming-14b6b5c43a5d
- https://levelup.gitconnected.com/8-things-i-never-knew-about-formatted-strings-in-python-until-recently-466085bffe99 - Interessanter Artikel zur Formatierung in englisch.
[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