Datei einlesen, bearbeiten, ‘rausschreiben#
Vorbereitung: Datei hobbies.txt
downloaden, im gleichen Verzeichnis ablegen wie dieses Notebook.
hobby_datei = "hobbies.txt"
with open( hobby_datei ) as my_file:
h_txt = my_file.read()
display(h_txt)
'Helga: Wandern, Kochen, Lesen\nTim: Kochen, Lesen, Schlafen\nfehlerhafte Zeile ohne Doppelpunkt\nMary: Lesen\n'
print(h_txt)
Helga: Wandern, Kochen, Lesen
Tim: Kochen, Lesen, Schlafen
fehlerhafte Zeile ohne Doppelpunkt
Mary: Lesen
# da wollen wir hin
#h_dict = { "Helga": [ "Wandern", "Kochen", "Lesen"] }
h_lines = h_txt.split("\n")
h_lines
['Helga: Wandern, Kochen, Lesen',
'Tim: Kochen, Lesen, Schlafen',
'fehlerhafte Zeile ohne Doppelpunkt',
'Mary: Lesen',
'']
helga = h_lines[0]
helga
'Helga: Wandern, Kochen, Lesen'
helga.split(": ")
['Helga', 'Wandern, Kochen, Lesen']
hobby_dict_einfach = {}
for zeile in h_lines:
if ":" in zeile:
zeile_split = zeile.split(": ")
#print(zeile_split)
schluessel = zeile_split[0]
wert = zeile_split[1]
#print(schluessel, "--->", wert)
hobby_dict_einfach[schluessel] = wert.split(", ")
else:
print("Zeile", zeile, "hat keinen Doppelpunkt")
hobby_dict_einfach
Zeile fehlerhafte Zeile ohne Doppelpunkt hat keinen Doppelpunkt
Zeile hat keinen Doppelpunkt
{'Helga': ['Wandern', 'Kochen', 'Lesen'],
'Tim': ['Kochen', 'Lesen', 'Schlafen'],
'Mary': ['Lesen']}
Exkurs: Mengen#
l = [ 1, 2, 2, 3, 2, 1 ]
set(l).union( { 2,3,4,5} )
{1, 2, 3, 4, 5}
alle_hobbies = set()
type(alle_hobbies)
set
for person, hobby in hobby_dict_einfach.items():
print( person, set(hobby) )
alle_hobbies = alle_hobbies.union( set(hobby) )
alle_hobbies
Helga {'Wandern', 'Kochen', 'Lesen'}
Tim {'Lesen', 'Kochen', 'Schlafen'}
Mary {'Lesen'}
{'Kochen', 'Lesen', 'Schlafen', 'Wandern'}
hobby_person_dict = { h: set() for h in alle_hobbies }
hobby_person_dict
{'Schlafen': set(), 'Lesen': set(), 'Kochen': set(), 'Wandern': set()}
for person, hobby in hobby_dict_einfach.items():
print( person, hobby)
for h in hobby:
print( f" {h=}" )
hobby_person_dict[h].add(person)
hobby_person_dict
Helga ['Wandern', 'Kochen', 'Lesen']
h='Wandern'
h='Kochen'
h='Lesen'
Tim ['Kochen', 'Lesen', 'Schlafen']
h='Kochen'
h='Lesen'
h='Schlafen'
Mary ['Lesen']
h='Lesen'
{'Schlafen': {'Tim'},
'Lesen': {'Helga', 'Mary', 'Tim'},
'Kochen': {'Helga', 'Tim'},
'Wandern': {'Helga'}}
l = { "Hallo", "Welt", "wie bist", "du schön!" }
l
{'Hallo', 'Welt', 'du schön!', 'wie bist'}
", ".join( l )
'wie bist, du schön!, Welt, Hallo'
ausgabedatei_zeilenweise = []
for k,v in hobby_person_dict.items():
zeilenstring = f"{k}: {", ".join( v )}"
print( zeilenstring )
ausgabedatei_zeilenweise.append( zeilenstring )
ausgabedatei_zeilenweise
Schlafen: Tim
Lesen: Tim, Mary, Helga
Kochen: Tim, Helga
Wandern: Helga
['Schlafen: Tim',
'Lesen: Tim, Mary, Helga',
'Kochen: Tim, Helga',
'Wandern: Helga']
ausgabedatei = "\n".join( ausgabedatei_zeilenweise )
ausgabedatei
'Schlafen: Tim\nLesen: Tim, Mary, Helga\nKochen: Tim, Helga\nWandern: Helga'
with open( "hobby_personen.txt", "w" ) as my_file:
my_file.write( ausgabedatei )
s = " Hallo , ,,,, Welt! "
s
' Hallo , ,,,, Welt! '
s.split(",")
[' Hallo ', ' ', '', '', '', ' Welt! ']
" s dfs sdsf ".strip()
's dfs sdsf'