2016-04-22 19 views
-5

Ich habe eine Reihe von Zeichenketten wieHandhabung Negation in Worte

I don’t like this book 

Und ich brauche so etwas wie unten. Wie würde ich diese

I do not like this book 
+0

Sie müssen für Ersatz ein Wörterbuch ersetzt werden. Und Sie brauchen keine regulären Ausdrücke. Reguläre Ausdrücke werden verwendet, um zu suchen (ja, ich weiß über re). Verwenden Sie einfach 'str.replace'. – JRazor

+0

Ich kann nicht an ein englisches Wort denken, das nicht mit einem geraden "nicht" Ersatz zu "nicht" – sberry

+1

@sberry funktionieren würde: "wird nicht", "soll nicht", "ist nicht". – Amadan

Antwort

0

Sie so etwas wie dieses brauchen erhalten:

replacement = {"n't": " not", "book":"notebook"} 
string = raw_input("Enter your sentence: ") 

for rplc in replacement: 
    string = string.replace(rplc, replacement[rplc]) 

print string 

Arbeiten wie folgt:

>>> ================================ RESTART ================================ 
>>> 
Enter your sentence: This isn't a book 
This is not a notebook 
>>> 

alles Fügen Sie die replacement Variable ersetzt werden soll.

0

Sie müssen die Optionen replace und dict angeben. Sie können das Wörterbuch leicht erweitern. Wird durch die Worte mit einem Großbuchstaben beginnen .:

replace_dict = { 
    "don't": "do not", 
    "won't": "will not", 
    "didn't": "did not", 
    "doesn't": "does not" 
} 

def replace_word(text): 
    for word in replace_dict: 
     if word in text: # Small first letter 
      text = text.replace(word, replace_dict[word]) 
     elif word[0].title() + word[1:] in text: # Big first letter 
      text = text.replace(word[0].title() + word[1:], 
           replace_dict[word][0].title() + replace_dict[word][1:]) 

    return text 

print replace_word("Don't go") 

>>> I do not go

+0

Kleiner Fall funktioniert für mich. Ich glaube nicht, dass ich in elif Zustand landen würde. Vielen Dank – krishna