Swedbank: transaktionslogg - tomma referenser i kontohistoriken
nilsFK opened this issue · 0 comments
nilsFK commented
Noterade att det förekom tomma referenser i kontohistoriken, vilket naturligtvis gör att parsningen buggar ur i och med att den läser in en sådan rad felaktigt.
- Lösningen borde vara att göra om parsningen, så att den läser in en rad beroende på längden på motsvarande rubrik och whitespace fram till nästa rubrik. Vi vet exempelvis att längden på rubriken "Clnr" är 4 + whitespace till nästa rubrik är 3 = 7. På så sätt kan vi även läsa in tomma referenser. För varje rad läser vi först in 7 tecken för Clnr, och sedan motsvarande antal tecken för nästa rubrik (d.v.s Kontonr)
- Följande regex hämtar upp alla alfanumeriska tecken inklusive eventuell whitespace och kan tillämpas på rubrikraden för att bestämma längder:
import re
regex = '(\w+\s*)'
re.findall(regex, ' abc def ghi')
# => ['abc ', 'def ', 'ghi']
- Notera även att vissa rubriker inte är helt alignade med resultaten. Den förekomst jag kan hitta är den mellan Kontohändelse och Belopp - där beloppet sträcker sig till vänster om rubriken. För att komma runt det så parsar vi utefter föreslagen regex. Sedan läser vi in substrängar utefter längderna på rubrik + efterföljande whitespace. Undantaget är alltså sista: där kan vi helt enkelt splitta på
r'\s{2,}'
, alltså precis som vi splittar idag. - Exempel på transaktionshistorik som är formaterad på det sättet finns i samples/swedbank/sample2
- Utöka testerna med exempel på tomma referenser.