2017-05-08 13 views
-1

Ich habe diesen Link verfolgt, um mein Problem zu lösen, aber ich blieb auf dem Weg stecken: Issues with replacing words in a string using a dictionary and the replace() function.Ersetzen Slang mit einem Wörterbuch

Ich habe eine Serie mit mehr als 20 000 Zeilen, jede Zeile mit Textzeichenfolge (kurze Messages). Und ein Wörterbuch von Schlüsseln und Werten, so dass ich mit einem Wert im Wörterbuch meiner Serie Wort ersetzt werden soll, wenn die Serie Wort einen Schlüssel im Wörterbuch entspricht:

Hier ist mein Code:

import pandas as pd 
df = pd.read_csv("file.csv") 
dictionary = {'u': 'you','pic':'picture', .....} 

list_string = the_string['message'].str.split() 

for i,word in enumerate(list_string): 
    if word in the_dictionary.keys(): 
     list_string[i] = the_dictionary[word] 

Wenn ich diesen Code ausführe, erhalte ich keine Fehler, außer dass die Serie nicht aktualisiert wird. Was vermisse ich? Ich lerne immer noch Python, also bin ich hier geblieben.

+1

Sie schließen Ihre Zeichenfolge im ersten Codefragment nicht. Bitte zuerst deine Frage klären. –

+0

@ WillemVanOnsem- ok – PyStu

+1

Was wird nicht aktualisiert, die Liste 'list_string' oder die ursprüngliche Zeichenkette' the_string ['Nachricht'] '? Es sollte die Liste aktualisieren. Für den String, verwenden Sie ''' .join (list_string)' –

Antwort

0

Wenn dies ausgeführt wird, bekomme ich keine Fehler, außer dass die Serie nicht aktualisiert wird.

Was genau wird nicht aktualisiert? list_string oder the_string? Weil beiseite legen die Tatsache, dass Sie dictionary erklären und dann the_dictionary in der Schleife verwenden, aktualisiert es list_string auf meinem Ende. Wenn Sie the_string wollen auch aktualisiert werden, dann würden Sie auch, sie aktualisieren müssen - Sie so wie dies tun können:

the_string = " ".join(list_string) 

Beachten Sie jedoch, dass Ihre aktuelle Prüfung nicht für eine Aktivierung nicht erklären, was Sie bedeutet 'd fix u in you, aber U würde nicht in You umgewandelt werden.

Verwandte Themen