Hallo,
ich habe eine Liste names list_char in der Namen stehen. Jetzt möchte ich überprüfen ob die Namen aus der list_char auch in list_dialog (in list_dialog stehen Namen und Text, ich möchte nur die Namen extrahieren) stehen. Falls Sie drinnen stehen, sollen diese Namen an eine weitere Liste angehangen werden, wenn Namen mehrmals vorkommen, so sollen sie auch mehrmals in diese Liste geschrieben werden. Ich komme da leider nicht weiter, es wäre sehr nett, wenn ihr mir vielleicht weiter helfen könnt.
MFG
Python Anfänger
Hi, ich habe es bis jetzt so gemacht das ich jeden Namen manuell aus list_char nehme und gucke ob der Name in list-dialog vorhanden ist. Falls der Name vorhanden ist füge ich ihn einer 3. Liste hinzu. Da es aber sehr viel Namen sind würde ich gerne wissen, ob es eine einfachere Möglichkeit gibt. Weil sonst müsste ich sehr viel Code schreiben. Bis jetzt sieht es bei mir so aus:
charakter_liste = []
for i in list_dialog:
if 'FRODO' in i:
charakter_liste.append('FRODO')
if 'DEAGOL' in i:
charakter_liste.append('DEAGOL')
if 'MERRY' in i:
charakter_liste.append('MERRY')
.......
Hi, ich habe es bis jetzt so gemacht das ich jeden Namen manuell aus list_char nehme und gucke ob der Name in list-dialog vorhanden ist. Falls der Name vorhanden ist füge ich ihn einer 3. Liste hinzu. Da es aber sehr viel Namen sind würde ich gerne wissen, ob es eine einfachere Möglichkeit gibt. Weil sonst müsste ich sehr viel Code schreiben. Bis jetzt sieht es bei mir so aus:
charakter_liste = []
for i in list_dialog:
if 'FRODO' in i:
charakter_liste.append('FRODO')
if 'DEAGOL' in i:
charakter_liste.append('DEAGOL')
if 'MERRY' in i:
charakter_liste.append('MERRY')
.......
Variablennamen sollten keinen Typ enthalten. Warum heißt `list_char` nicht `names`, wenn Da Namen drin stehen?
Wie kann in einer Liste `list_dialog` Namen und Text stehen? Wie sieht die Datenstruktur aus?
Was ist Dein Problem? Woher kommen diese Listen? Was soll das Ergebnis sein?
Wie kann in einer Liste `list_dialog` Namen und Text stehen? Wie sieht die Datenstruktur aus?
Was ist Dein Problem? Woher kommen diese Listen? Was soll das Ergebnis sein?
Hallo Sirius, in list_char stehen Namen aus einer csv Tabelle. Und in list_dialog steht immer drin was die Personen(Namen) sagen, deshalb steht da Text und Namen drin. Ich möchte aber nur das die Namen die in der Spalte dialog stehen extrahieren, deshalb auch der Name list_dialog. Diese extrahierten Namen möchte ich dann in eine dritte Liste schreiben. Ich hoffe du verstehst was ich meine.Sirius3 hat geschrieben: Sonntag 28. Juli 2019, 14:16 Variablennamen sollten keinen Typ enthalten. Warum heißt `list_char` nicht `names`, wenn Da Namen drin stehen?
Wie kann in einer Liste `list_dialog` Namen und Text stehen? Wie sieht die Datenstruktur aus?
Was ist Dein Problem? Woher kommen diese Listen? Was soll das Ergebnis sein?
char dialog movieSirius3 hat geschrieben: Sonntag 28. Juli 2019, 14:41 Wie sehen die die Dialoge aus? Wie kann man daraus die Namen extrahieren?
0 DEAGOL Oh Smeagol Ive got one! , Ive got a fish Smeagol, Smeagol! The Return of the King
1 SMEAGOL Pull it in! Go on, go on, go on, pull it in! The Return of the King
2 DEAGOL Arrghh! The Return of the King
3 SMEAGOL Deagol! The Return of the King
4 SMEAGOL Deagol! The Return of the King
5 SMEAGOL Deagol! The Return of the King
6 SMEAGOL Give us that! Deagol my love The Return of the King
Das wäre ein Ausschnitt aus der csv Datei. Ich möchte jetzt alle Namen die in der Spalte Dialog stehen in eine Liste schreiben, wenn Namen mehrmals vorkommen so sollen diese auch mehrmals in die Liste reingeschrieben werden. Zum Schluss möchte ich dann zählen wie oft jeweils jeder Name genannt worden ist, und den Namen und die Anzahl in ein Dictionary schreiben.
reza331 hat geschrieben: Sonntag 28. Juli 2019, 14:59/char /dialog /movieSirius3 hat geschrieben: Sonntag 28. Juli 2019, 14:41 Wie sehen die die Dialoge aus? Wie kann man daraus die Namen extrahieren?
0 /DEAGOL / Oh Smeagol Ive got one! , Ive got a fish Smeagol, Smeagol! /The Return of the King
1 /SMEAGOL /Pull it in! Go on, go on, go on, pull it in! /The Return of the King
2 /DEAGOL /Arrghh! /The Return of the King
3 /SMEAGOL /Deagol! / The Return of the King
4 /SMEAGOL /Deagol! /The Return of the King
5 /SMEAGOL /Deagol! /The Return of the King
6 /SMEAGOL /Give us that! Deagol my love /The Return of the King
Das wäre ein Ausschnitt aus der csv Datei. Ich möchte jetzt alle Namen die in der Spalte Dialog stehen in eine Liste schreiben, wenn Namen mehrmals vorkommen so sollen diese auch mehrmals in die Liste reingeschrieben werden. Zum Schluss möchte ich dann zählen wie oft jeweils jeder Name genannt worden ist, und den Namen und die Anzahl in ein Dictionary schreiben.
Ich habe jetzt die einzelnen Spalten der csv Datei mit einem / getrennt.
Der erste Schritt ist also, die csv-Datei in eine Datenstruktur zu lesen. Die Datei scheint ja Tab-separiert zu sein. Dafür gibt es das csv-Modul oder Pandas.
Die Spalte mit der Überschrift char beinhaltet die Namen. Zählen kann man z.B. mit collections.Counter.
Die Spalte mit der Überschrift char beinhaltet die Namen. Zählen kann man z.B. mit collections.Counter.
Vielen Dank erstmal, aber ich weiß nur nicht wie man Die Namen aus Dialog heraus extrahiert und in eine Liste schreibt . Ich habe ja bereits alle Namen aus der Spalte char in eine Liste geschrieben. Kann man die list_char nicht irgendwie verwenden, um die Namen aus Dialog in eine Liste zu schreiben. Weil die Namen aus Dialog sind ja die selben wie die aus char.Sirius3 hat geschrieben: Sonntag 28. Juli 2019, 15:19 Der erste Schritt ist also, die csv-Datei in eine Datenstruktur zu lesen. Die Datei scheint ja Tab-separiert zu sein. Dafür gibt es das csv-Modul oder Pandas.
Die Spalte mit der Überschrift char beinhaltet die Namen. Zählen kann man z.B. mit collections.Counter.
Ich habe es bis jetzt so gemacht:
import csv
from collections import Counter
file2 = open('lotr_clean.csv')
reader_object2 = csv.reader(file2, delimiter=';')
list_dialog = [] # hier kommt alles rein was in Spalte Dialog steht
for x in reader_object2:
a = (str(x[2]))
s = a.upper()
list_dialog.append(s)
#print(list_dialog)
charak_liste = []
for i in list_dialog:
if 'FRODO' in i:
charak_liste.append('FRODO')
if 'DEAGOL' in i:
charak_liste.append('DEAGOL')
if 'MERRY' in i:
charak_liste.append('MERRY') # das müsste ich mit allen Namen so weiter machen, gibt es eine einfachere Möglichkeit
#print(charak_liste)
dict_dialog = Counter(chark_liste)
An Deinen Variablennamen solltest Du dringend arbeiten. Ein Objekt ist alles in Python, bei `reader_object2` hat object also keine Aussagekraft und die 2 ist unsinnig.
`x` ist ein schlechter Name überhaupt und vor allem für eine Zeile einer csv-Datei.
Die Spalten sind schon vom Typ `str`, das nochmal zu konvertieren also ohne Wirkung.
`a` und `s`, was sind wieder schlechte Namen für einen Dialogtext.
Ebenso schlecht sind Abkürzungen in Name. charak???
Und was ist `i`?
Zum Problem:
Du weißt schon, was eine for-Schleife ist. Du hast eine Liste mit allen Namen. Und Du willst für jeden Namen der Liste etwas tun. Dann mußt Du Dein Wissen nur noch kombinieren.
`x` ist ein schlechter Name überhaupt und vor allem für eine Zeile einer csv-Datei.
Die Spalten sind schon vom Typ `str`, das nochmal zu konvertieren also ohne Wirkung.
`a` und `s`, was sind wieder schlechte Namen für einen Dialogtext.
Ebenso schlecht sind Abkürzungen in Name. charak???
Und was ist `i`?
Zum Problem:
Du weißt schon, was eine for-Schleife ist. Du hast eine Liste mit allen Namen. Und Du willst für jeden Namen der Liste etwas tun. Dann mußt Du Dein Wissen nur noch kombinieren.
OK Danke erstmal für den Rat, ich weiß das ich eine For schleife benutzen muss, aber ich weiß nicht wie es hier geht, weil dann müsste man ja zwei for schleifen, ineinander einmal machen, aber das funktioniert leider nicht, wäre nett wenn du mir da weiterhelfen könntest.Sirius3 hat geschrieben: Sonntag 28. Juli 2019, 18:11 An Deinen Variablennamen solltest Du dringend arbeiten. Ein Objekt ist alles in Python, bei `reader_object2` hat object also keine Aussagekraft und die 2 ist unsinnig.
`x` ist ein schlechter Name überhaupt und vor allem für eine Zeile einer csv-Datei.
Die Spalten sind schon vom Typ `str`, das nochmal zu konvertieren also ohne Wirkung.
`a` und `s`, was sind wieder schlechte Namen für einen Dialogtext.
Ebenso schlecht sind Abkürzungen in Name. charak???
Und was ist `i`?
Zum Problem:
Du weißt schon, was eine for-Schleife ist. Du hast eine Liste mit allen Namen. Und Du willst für jeden Namen der Liste etwas tun. Dann mußt Du Dein Wissen nur noch kombinieren.