Datei einlesen, bearbeiten, ‘rausschreiben

Contents

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'