-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathiban_lambda.py
More file actions
48 lines (32 loc) · 1.3 KB
/
iban_lambda.py
File metadata and controls
48 lines (32 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import re
# IBAN Prüfzifferberechnung nach http://www.pruefziffernberechnung.de/Originaldokumente/IBAN/Prufziffer_07.00.pdf
def validierung_iban_hilfsmethode(numiban):
# 1. Teilschritt
irest=numiban
while irest:
i=numiban[:9]
rs=str(int(i)%97)
irest=numiban[9:]
numiban=rs+irest
return int(rs)==1
def validierung_iban(iban):
# Schritt 1: IBAN und nicht-alpha-Zeichen entfernen
iban = re.sub('^IBAN', '', iban)
iban = re.sub('[^\w]', '', iban)
save = iban
# Schritt 2: Erste vier Zeichen an Ende Schieben
iban = iban[4:] + iban[:4]
# Schritt 3: Alphazeichen umwandeln
l = map(lambda x: int(x, base=36), list(iban))
iban = ''.join(map(str, l))
# Schritt 4: Durch 97 teilen
# Da die Nummer u.U. zu gross ist, wird das iterative Verfahren verwendet
r=validierung_iban_hilfsmethode(iban)
return(save, r)
print(validierung_iban('IBAN CH10 0023 00A1 0235 0260 1'))
print(validierung_iban('IBAN CH93 0076 2011 6238 5295 7'))
print(validierung_iban('IBAN CH30 0070 0111 5001 8305 9'))
print(validierung_iban('IBAN DE68 2105 0170 0012 3456 78'))
print(validierung_iban('IBAN LI5708801200185100814'))
print(validierung_iban('IBAN SC52BAHL01031234567890123456USD'))
print(validierung_iban('IBAN QA54QNBA000000000000693123456'))