Strings in Python

Zeichenketten

Die deutsche Bezeichnung Zeichenkette für String, macht es deutlicher. Strings sind einfach nur eine Aneinanderreihungen von beliebigen Zeichen.

1Python Programmierkurs
2Python: Methoden
3Kontrollstrukturen
4Strings in Python
5Container
6Objekte in Python
7Module
8Exceptions in Python
9Typkonvertierung
10Python und Dateien
11Datum und Zeit mit Python verarbeiten
12Multithreading
13Netzwerk in Python
14Logging in Python
15GPIO
16Automatische Tests
17Datenbanken mit Python
18Python: Generatoren und List Comprehension
19Python: Webseiten mit Flask
20Python virtuelle Umgebungen
21Interrupts & Signale
22NumPy
23Matplotlib
24match
25Reguläre Ausdrücke
26lambda Funktionen
27logging.config
28Decorators

Du hast sie in den vorhergehenden Teilen schon kennengelernt. In einen String kannst du im Prinzip alles hineinstecken.

# coding = 'utf-8'

s1 = 'Homer'
s2 = '1969'
s3 = 'Dies ist ein ganzer Satz.'
s4 = 'Auf den Alkohol - Der Beginn und die Lösung sämtlicher Lebenprobleme. (Homer Simpson)'

Eine Stringkonstante wird entweder in doppelte Hochkommata wie oben oder in doppelte Gänsefüßchen eingefasst:

s1="Homer"

Ich bevorzuge die Version mit den Hochkommata, da es für mich einfacher zu tippen ist.

Länge von Strings

Die eingebaute Funktion len() von Python. Kann die Länge von Strings und die Anzahl der Elemente in Listen, Tupeln oder Dictionaries zurückgeben.

s1 = 'Homer'

print(len(s1)

Liefert dir wie erwartet eine 5.

Über einen String iterieren

Da wir jetzt die Länge eines Strings bestimmen können, können wir uns jedes einzelne Zeichen des Strings ausgeben lassen:

s = 'Homer'

for pos in range(0,len(s)):
 print(s[pos])

Damit bekommst du alle Zeichen in s untereinander ausgegeben.

Ausgabe der einzelnen Zeichen des Strings
Olli Graf - raspithek.de
string_iterCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
einzelne Zeichen des String s

String-Funktionen

Es gibt verschiedene Funktionen, die dir das Arbeiten mit einem String einfacher machen. Eine Funktion, die dir zeigt, ob ein Zeichen im String vorhanden ist, kannst du jetzt eigentlich selber schreiben:

def find_in_string(s, c):

  for pos in range(0,len(s)):
    if(s[pos] == c):
      return pos
  return -1


print(find_in_string('Homer','e'))
print(find_in_string('Homer','n'))

Die Methode find_in_string sucht im übergebenen String s nach dem Zeichen c und liefert dessen Position zurück. Wenn c nicht in s enthalten ist, wird -1 zurückgeben.

Allerdings macht Python uns das Leben einfacher mit der eingebauten Methode find(), die genau das gleiche tut.

print('Homer'.find('e'))
print('Homer'.find('n'))

Was es mit der Schreibweise mit dem . zwischen String und Methodennamen auf sich hat, erkläre ich dir im Kapitel Objekte genauer. find() findet nicht die erste Position eines Zeichens sondern auch ganzer Strings

println('Homer'.find('Home')

Dies gibt dir eine 0 aus, da Python immer bei 0 anfängt zu zählen. Beachte auch, dass beim Suchen die Groß-/Kleinschreibung beachtet wird, wenn du 'home' suchst wird dir eine -1 ausgegeben.

Konvertierung in Groß- oder Kleinbuchstaben

Für die Konvertierung des ganzen String benutzt du die Methode upper() und lower() wandelt die den gesamten String in Kleinbuchstaben um.

print('Homer'.lower())
print('Homer'.upper())
print('homer'.capitalize())

capitalize() wandelt nur den ersten Buchstaben des Strings in einen Großbuchstaben um. Die Ausgabe des Programms sieht dann so aus:

lower(), upper() und capitalize()
Olli Graf - raspithek.de
str_upper_lowerCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
lower(), upper() und capitalize()

Beachte, dass alle drei Methoden einen neuen String zurückliefert und den alten unangetastet lassen! Mit diesem Wissen, kannst du find() abgewöhnen, die Groß-/Kleinschreibung zu beachten

println('Homer'.lower().find('home'.lower())

Hierbei erhältst du jetzt eine 0, da beide Strings vor dem Aufruf von find() komplett in Kleinbuchstaben umgewandelt werden.

Die title() Methode arbeitet etwas spezieller, sie wandelt den ersten Buchstaben jedes Wortes in einen Großbuchstaben um.

print('dr. nick riviera'.title())

Dies liefert den neuen String 'Dr. Nick Riviera'

Eine Methode, die sehr nützlich gerade bei Usereingaben und beim Parsen von Zeilen in einer Datei ist, ist split(). Sie entfernt Leerzeichen und Zeilenumbrüche (sog. Whitspaces) am Beginn und am Ende einer Zeichenkette

s= ' mit Leerzeichen  '

s = s.strip()
print(f'*{s}*')

In der Ausgabe '*mit Leerzeichen*' erkennst du das vor bzw. nach dem Sternchen keine Leerzeichen mehr vorhanden sind.

Wenn du weißt, dass du nur am Anfang oder am Ende Whitspaces entfernen musst, kannst alternativ auch lstrip() bzw. rstrip() benutzen. Allen Methoden kannst du auch per Parameter mitteilen, welche Zeichen sie entfernen sollen

satz.rstrip('.!?')

Hier werden alle Satzzeichen am Satzende entfernt.

f-Strings

Jetzt komme ich endlich dazu, dir die f-Strings nahezubringen. Ein f-String ist ein formatierter String, der dir die Möglichkeit bietet, Variablenwerte in den String aufzunehmen.

a=5
b=10

produkt = a * b

print(f'Das Produkt aus {a} und {b} ist {produkt}')

Innerhalb der geschweiften Klammern wird einfach nur der Variablenname eingetragen, zu Laufzeit ersetzt Python diese Platzhalter durch die aktuellen Werte. Daher wird dir ‚Das Produkt aus 5 und 10 ist 50′ ausgegeben‘. Gerade bei Gleitkommazahlen macht es Sinn, die Anzahl der Nachkommastellen zu begrenzen, dazu trennst du die Formatierungsanweisung mit Doppelpunkt vom Variablennamen ab.

import math


print(f'Pi ist {math.pi}')
print(f'Pi ist {math.pi:.2f}')

Das erste print() gibt die alle verfügbaren Nachkommastellen aus, das zweite nur noch zwei.

Strings zerlegen

Ein wichtiger Anwendungsfall bei Strings ist die Zerlegung in einzelne Teile. Beispielsweise bei der Verarbeitung von kommaseparierten Dateien (CSV).

Dazu hat Python eine passende Methode parat: split(). Diese baut eine Liste aus den Einzelteilen eines Strings auf, die durch ein Trennzeichen separiert sind. Defaultmäßig ist dies das Leerzeichen, du kannst aber auch ein Zeichen deiner Wahl übergeben

s = 'Dies ist ein ganzer Satz.'

print(f'zerlegt= {s.split()}')

werte = '1,2,3,4,5,6,7,8,9'

print(f'werteliste = {werte.split(",")}')
Ausgabe von split()
Olli Graf - raspithek.de
splitCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Ausgabe von split()

Listen werden in Python mit eckigen Klammern deklariert und auch so ausgegeben. Dazu gibt’s genaueres dann im nächsten Teil.

Schreibe einen Kommentar

Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Olli Graf - raspithek.de
WordPress Cookie Hinweis von Real Cookie Banner