Finished Task S2 for PR3
parent
dce0c0a2b0
commit
0b7b0ce07b
|
@ -0,0 +1,2 @@
|
|||
Dr. Lucas Linus Kreutzer, 19.12.2022, Heidelberger Allee 18 68305 Mannheim, 0123456789
|
||||
Ing. Birgid Oestrovsky, 2022-03-12, Heidelberger Allee 18 68305 Mannheim, 0123456789
|
|
@ -0,0 +1,62 @@
|
|||
[
|
||||
{
|
||||
"Index": 1,
|
||||
"Titel": [
|
||||
"Dr."
|
||||
],
|
||||
"Vorname": [
|
||||
"Lucas"
|
||||
],
|
||||
"Zweitname": [
|
||||
"Linus"
|
||||
],
|
||||
"Nachname": [
|
||||
"Kreutzer"
|
||||
],
|
||||
"Stra\u00dfe": [
|
||||
"Heidelberger Allee"
|
||||
],
|
||||
"Hausnummer": [
|
||||
"18"
|
||||
],
|
||||
"PLZ": [
|
||||
"68305"
|
||||
],
|
||||
"Wohnort": [
|
||||
"Mannheim"
|
||||
],
|
||||
"Geburtsdatum": [
|
||||
"19.12.2022"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Index": 2,
|
||||
"Titel": [
|
||||
"Ing."
|
||||
],
|
||||
"Vorname": [
|
||||
"Birgid"
|
||||
],
|
||||
"Zweitname": [
|
||||
null
|
||||
],
|
||||
"Nachname": [
|
||||
"Oestrovsky"
|
||||
],
|
||||
"Stra\u00dfe": [
|
||||
"Heidelberger Allee"
|
||||
],
|
||||
"Hausnummer": [
|
||||
"18"
|
||||
],
|
||||
"PLZ": [
|
||||
"68305"
|
||||
],
|
||||
"Wohnort": [
|
||||
"Mannheim"
|
||||
],
|
||||
"Geburtsdatum": [
|
||||
"12.03.2022"
|
||||
]
|
||||
}
|
||||
]
|
|
@ -0,0 +1,26 @@
|
|||
class X:
|
||||
pass
|
||||
|
||||
|
||||
class Y(X):
|
||||
pass
|
||||
|
||||
|
||||
class Z(X, Y):
|
||||
pass
|
||||
|
||||
|
||||
xyz = Z()
|
||||
|
||||
# L[X] = [X] + merge([X])
|
||||
# L[X] = [X]
|
||||
|
||||
# L[Y] = [Y] + merge(L(X), [Y])
|
||||
# L[Y] = [Y] + merge([X], [Y])
|
||||
# L[Y] = [Y, X] + merge([Y])
|
||||
# L[Y] = [Y, X]
|
||||
|
||||
# L[Z] = [Z] + merge(L(X), L(Y), [X, Y])
|
||||
# L[Z] = [Z] + merge([X], [Y, X], [X, Y])
|
||||
# >> cannot pick X
|
||||
# >> cannot pick Y
|
|
@ -0,0 +1,10 @@
|
|||
import re
|
||||
|
||||
text = "If the the problem is textual, use the the re module"
|
||||
|
||||
# \b Beschränkt den Match auf den Anfang/das Ende des Wortes
|
||||
# \1 Referenz auf die erste Gruppe (In dem Fall das erste Vorkommen des Wortes)
|
||||
# \w+ Matched mindestens ein Wort
|
||||
|
||||
text = re.sub(r'\b(\w+)( \1\b)+', r'\1', text)
|
||||
print(text)
|
|
@ -0,0 +1,53 @@
|
|||
import re
|
||||
import json
|
||||
|
||||
index = 0
|
||||
|
||||
def parse_zeile(zeile):
|
||||
global index
|
||||
index = index + 1
|
||||
|
||||
elemente = zeile.split(", ")
|
||||
name = elemente[0]
|
||||
geburtsdatum = elemente[1]
|
||||
adresse = elemente[2]
|
||||
rufnummer = elemente[3]
|
||||
print(name, adresse, geburtsdatum, rufnummer)
|
||||
|
||||
person = {}
|
||||
|
||||
person['Index'] = index
|
||||
|
||||
name_matches = re.search(r'([^ ]+) ([^ ]+) ([^ ]+)(?: ([^ ]+))?', name)
|
||||
person['Titel'] = [name_matches.group(1)]
|
||||
person['Vorname'] = [name_matches.group(2)]
|
||||
if name_matches.group(4) is None:
|
||||
person['Zweitname'] = [None]
|
||||
person['Nachname'] = [name_matches.group(3)]
|
||||
else:
|
||||
person['Zweitname'] = [name_matches.group(3)]
|
||||
person['Nachname'] = [name_matches.group(4)]
|
||||
|
||||
adress_matches = re.search(r'([^0-9]+) ([0-9]+) ([0-9]{5,10}) (.+)', adresse)
|
||||
person['Straße'] = [adress_matches.group(1)]
|
||||
person['Hausnummer'] = [adress_matches.group(2)]
|
||||
person['PLZ'] = [adress_matches.group(3)]
|
||||
person['Wohnort'] = [adress_matches.group(4)]
|
||||
|
||||
birth_matches = re.search(r'([0-9]{2,4})[ .-]([0-9]{2})[ .-]([0-9]{2,4})', geburtsdatum)
|
||||
if len(birth_matches.group(1)) == 4:
|
||||
person['Geburtsdatum'] = [birth_matches.group(3) + "." + birth_matches.group(2) + "." + birth_matches.group(1)]
|
||||
else:
|
||||
person['Geburtsdatum'] = [birth_matches.group(1) + "." + birth_matches.group(2) + "." + birth_matches.group(3)]
|
||||
|
||||
return person
|
||||
|
||||
|
||||
personen = []
|
||||
|
||||
with open("Personen.txt", 'r') as file:
|
||||
for zeile in file:
|
||||
personen.append(parse_zeile(zeile))
|
||||
|
||||
with open("PersonenNeu.json", 'w') as file:
|
||||
json.dump(personen, file)
|
|
@ -0,0 +1,21 @@
|
|||
import re
|
||||
|
||||
def parse_number(number):
|
||||
pattern = r'^(?:\+?1[- ])?(\(\d{3}\)|\d{3})[-. ](\d{3})[-. ](\d{4})$'
|
||||
|
||||
if not re.fullmatch(pattern, number):
|
||||
raise ValueError("Ungültige Telefonnummer")
|
||||
|
||||
segments = re.search(pattern, number)
|
||||
|
||||
ortsvorwahl = segments.group(1).replace("(", "").replace(")", "")
|
||||
amtskennziffer = segments.group(2)
|
||||
vorwahl = segments.group(3)
|
||||
|
||||
if ortsvorwahl[0] <= '1' and ortsvorwahl[0] >= '0':
|
||||
raise ValueError("Ungültige Telefonnummer")
|
||||
|
||||
if (vorwahl[0] <= '1' and vorwahl[0] >= '0') or vorwahl[1] == '9':
|
||||
raise ValueError("Ungültige Telefonnummer")
|
||||
|
||||
return "1-" + ortsvorwahl + "-" + amtskennziffer + "-" + vorwahl
|
|
@ -0,0 +1,33 @@
|
|||
import unittest
|
||||
import s2_a4_a
|
||||
|
||||
test_numbers = [
|
||||
("+1 223-456-7890", "1-223-456-7890"),
|
||||
("1-223-456-7890", "1-223-456-7890"),
|
||||
("+1 223 456-7890", "1-223-456-7890"),
|
||||
("(223) 456-7890", "1-223-456-7890"),
|
||||
("1 223 456 7890", "1-223-456-7890"),
|
||||
("223.456.7890", "1-223-456-7890"),
|
||||
("1-989-111-2222", "1-989-111-2222"),
|
||||
]
|
||||
|
||||
test_numbers_invalid = [
|
||||
"",
|
||||
"+49 012 345 6821",
|
||||
"+49 6821",
|
||||
"1-182-324-4324",
|
||||
"1-082-324-4324",
|
||||
"1-682-624-1324",
|
||||
"1-682-624-0324",
|
||||
"1-682-624-5924",
|
||||
]
|
||||
|
||||
|
||||
class NumbersTests(unittest.TestCase):
|
||||
def test_numbers(self):
|
||||
for number, expected in test_numbers:
|
||||
self.assertEqual(expected, s2_a4_a.parse_number(number))
|
||||
|
||||
def test_numbers_fails(self):
|
||||
for number in test_numbers_invalid:
|
||||
self.assertRaises(ValueError, lambda: s2_a4_a.parse_number(number))
|
Loading…
Reference in New Issue