@BlackJack: Echt cool, danke!
Ja bei der Vergabe der Namen habe ich geschlampt, weil das Programm noch in der Testphase ist, aber ich sollte von Anfang die Namen ordentlich benennen.
Ich habe noch eine kleine Frage zu der Funktion:
Was bedeutet das 'r' vor dem String? Warum muss das dort sein? Warum die Klamer () ?
Code: Alles auswählen
residual = re_find_nth(r'Residual: (-?\d*\.\d*)', text).group().split()[1]
Übrigens hat sich durch deine Hilfe bei der Definition der Funktion gleich schon ein zweites Problem von mir gelöst.
In meinem Text suche ich nach residual, p1, p2, p3, p4 und p5, die kommen genau zweimal vor und ich möchte nur den zweiten.
Außerdem suche nach divergence, convergence, matrix und squares, die kommen nur einmal vor.
Das kann ich nun im Funktionsaufruf einstellen.
Danke.
Code: Alles auswählen
def re_find_nth(pattern, text, index=1, flags=0):
"""Find the n-th match. Counting starts with zero.
Default index is 1 == the second match.
Returns `None` if there are not enough matches.
"""
for i, match in enumerate(re.finditer(pattern, text, flags)):
if i == index:
return match
return None
residual = re_find_nth(r'Residual: (-?\d*\.\d*)', text).group().split()[1]
parameter1 = re_find_nth('p1: -?\d*\.?\d*', text).group().split()[1]
parameter2 = re_find_nth('p2: -?\d*\.?\d*', text).group().split()[1]
parameter3 = re_find_nth('p3: -?\d*\.?\d*', text).group().split()[1]
parameter4 = re_find_nth('p4: -?\d*\.?\d*', text).group().split()[1]
parameter5 = re_find_nth('p5: -?\d*\.?\d*', text).group().split()[1]
squares = re_find_nth('SQUARES \s*-?\d*\.\d*[E]?[+-]?\d?\d?\d?', text, index=0).group().split()[1]
convergence = re_find_nth('No corrector convergence', text, index=0)
divergence = re_find_nth('divergence', text, index=0)
matrix = re_find_nth('Matrix', text, index=0)
Übrigens hat sich durch deine Hilfe bei der Definition der Funktion gleich schon ein zweites Problem von mir gelöst.
In meinem Text suche ich nach residual, p1, p2, p3, p4 und p5, die kommen genau zweimal vor und ich möchte nur den zweiten.
Außerdem suche nach divergence, convergence, matrix und squares, die kommen nur einmal vor.
Das kann ich nun im Funktionsaufruf einstellen.
Danke.