Python

Die Übersichtlichkeit der Seite wird durch Javascript erhöht. Ist dies aktiviert, werden die Texte unter den Überschriften durch Anklicken der Überschriften ein- und ausgeblendet.

Testmodule

Ich möchte bei der Entwicklung zukünftiger Programme die einzelnen Funnktionen jeweils ausgiebig testen. Das Testen selbst wird in der interaktiven Python3-Schell durchgeführt. Allerdings ist es deutlich zu aufwendig die Funktion jeweils in diese Schell zu kopieren, zumal der Test in der Regel Änderungen nach sich zieht. Deshalb werde ich in jedem Projekt ein Modul test.py anlegen und jeweils am anfang folgendes importieren:

from imp import reload
import test

Ein neues Einlesen nach dem ich Änderungen vorgenommen habe ist dann möglich durch:

reload(test)

nach oben

Fragezeichenoperator

In Python gibt es keinen Fragezeichenoperator. Der Fragezeichenoperator funktioniert wie folgt: Bedingung ? dann : sonnst Beispiel:

a==b ? a++ : a=b

In Python kann dieses Verhalten wie folgt nachgestellt werden: wert='wenn Bedingung' if Bedingung else 'sonst' Setzt den Wert von wert auf 'wenn Bedingung' sofern diese True ergibt, ansonnsten wird wert auf 'sonst' gesetzt. Beispiel:

typ = '.php' if privat else '.html'

Wenn privat im Beispiel True enthält, wird typ ='.php', anderen Falls wird typ='.html'

nach oben

RegularExpressions nutzen

Für die Nutzung von RegularExpressions gibt es in Python das Modul re mit der Methode search. Zunächst muss dies also importiert werden:

import re
from re import search
from re import search as test

Die search-Methode aus dem Modul re erwartet 2 Parameter. Zuerst einen Regexausdruck als Zeichenkette und dann die zu durchsuchende Zeichenkette. Zurückgegeben wird ein Matchobjekt, wenn der Ausdruck auf die zu durchsuchende Zeichenkette passt oder none, wenn dieser nicht passt. Somit ist es leicht herauszufinden, ob es einen Treffer gibt, bzw. den Treffer auszulesen:

#Treffer = re.search(regEX,Zeichenkette) #bei import re
#Treffer = search(regEX,Zeichenkette)  #bei from re import search
Treffer = test(regEX,Zeichenkette) #bei from re import search as test

if Treffer:
  print ( "folgender Treffer gefunden:",Treffer.group() )
  # werden mehrere Treffergruppen durch Runde Klammern erzeugt,
  # können diese durch einen Index abgerufen werden
  # print (" Gruppe 1: ", Treffer.group(1) ) 
  print ( "Der Treffer beginnt in der Zeichenkette an Position", Treffer.start() )
  print ( "und endet in der Zeichenkette an Position",Treffer.end() )
  #print ( "Der Treffer beginnt in der Zeichenkette an Position", Treffer.span()[0] )
  #print ( "und endet in der Zeichenkette an Position",Treffer.span()[1] )
  print ( "Der Treffer ist an Position (Beginn, Ende)", Treffer.span() )

Ein Anwendungsbeispiel ist beim Einlesen einer Konfigurationsdatei im folgenden Abschnitt gezeigt.

nach oben

Konfigurationsdatei einlesen

Vorrausetzung die Datei .testcfg

Vorname: Maik
Nachname: Friemel
Ort: =Bad Öhnhausen
PLZ: 30419
berufstätig
Körpergröße 172 cm
Zufall = haustier
Alter=40
18Uhr schließen 
Haustiere 2
Haustier=Hund
erfolgreich

nach oben

Hier mit Hilfe von RegularExpressions:

#! /usr/bin/python3
# -*- coding: utf-8 -*-
'''
Auslesen einer Konfigurationsdatei in Key - Werte - Paare eines Dictionarys
Vorteil: 
für jede Zeile mit passender Formatierung wird ein Eintrag angelegt,
wodurch es nicht nötig ist jede Zeile auf alle Schlüsselwörter zu prüfen.
Am Ende können die Werte direkt über ein bestimmtes Schlüsselwort abgerufen werden.
'''

import re #RegularExpressions

Parameter = {}

cfg = open(".testcfg")
for zeile in cfg:
	m=re.search(r"^\s*([\w\däöüÄÖÜß]+)[\s=\:]+([\w\d\äöüÄÖÜß:\. _-]+)",zeile)
	if (m):
		Arg=m.group(1).lower()
		Wert=m.group(2)
		Parameter.update({Arg:Wert})
	else:
		m=re.search(r"^\s*([\w\däöüÄÖÜß]+)\s+$",zeile)
		if (m):
			Arg=m.group(1).lower()
			Wert=True
			Parameter.update({Arg:Wert})
cfg.close()

#print Parameter
#alle in Schleife
for key in Parameter.keys():
	print key,' : ',str(Parameter[key])
print '******************************\n'

#direkt über ein bestimmtes Schlüsselwort
if 'vorname' in Parameter:
	print ("Vorname: " + Parameter["vorname"]) 
if 'nachname' in Parameter:
	print ("Nachname: " + Parameter["nachname"])
if 'plz' in Parameter:
	print ("PLZ: " + Parameter["plz"])
if 'ort' in Parameter:
	print ("Ort: " + Parameter["ort"])
if 'berufstätig' in Parameter:
	print ("berufstätig: "+ str(Parameter["berufstätig"])) 
if 'körpergröße' in Parameter:
	print ("Größe: " + Parameter["körpergröße"])
if 'haustier' in Parameter:
	print ("Haustier: " + Parameter["haustier"])

nach oben