2016-10-08 3 views
0

Ich habe dieses Problem für ein paar Stunden versucht nun zu lösen und mit der richtigen Lösung nicht kommen kann, das ist die Frage:Mit Streifen() -Methode und Zeichensetzung in Python

eine Schleife schreiben, die erstellt eine neue Wortliste, die eine String-Methode verwendet, um die Wörter aus der Liste zu entfernen, die in Problem 3 aller führenden und nachfolgenden Interpunktion erstellt wurde. Hinweis: Die oben importierte String-Bibliothek enthält eine Konstante namens Interpunktion. Drei Zeilen Code.

Hier ist mein Code:

import string 

    def litCricFriend(wordList, text): 
     theList = text.lower().replace('-', ' ').split() #problem 3 

     #problem below 
     for word in theList: 
      word.strip(string.punctuation) 
      return theList 
+0

Was genau ist das Problem? – Mureinik

+0

Berechnung und Rückgabe der Häufigkeit, mit der das angegebene Wort (wordList) in einem Textkörper (Text) angezeigt wird. – Gabriel

+0

1) 'strip()' ändert den Originaltext nicht, sondern erstellt neuen Text. 2) Sie haben "Rückkehr" an falscher Stelle. – furas

Antwort

0

Sie haben ein paar Bits in Ihrem Code bekommen, die ... na ja, ich bin nicht wirklich sicher, warum sie dort sind, um ehrlich zu sein, haha. Lasst uns zusammen arbeiten!

Ich gehe davon aus, dass Sie einen Text erhalten haben: text = "My hovercraft is full of eels!". Lassen Sie uns das in Wörter aufteilen, die Wörter klein schreiben und alle Interpunktionszeichen entfernen. Wir wissen, wir brauchen string.punctuation und str.split(), und Sie haben auch herausgefunden, dass str.replace() ist nützlich. Also lass uns diese benutzen und unser Ergebnis erhalten!

import string 

def remove_punctuation(text): 
    # First, let's remove the punctuation. 
    # We do this by looping through each punctuation mark in the 
    # `string.punctuation` list, and then replacing that mark with 
    # the empty string and re-assigning that to the same variable. 
    for punc in string.punctuation: 
     text = text.replace(punc, '') 

    # Now our text is all de-punctuated! So let's make a list of 
    # the words, all lowercased, and return it in one go: 
    return text.lower().split() 

Sieht für mich wie die Funktion ist nur drei Zeilen, was Sie sagten, Sie wollten!


Für den fortgeschrittenen Leser, können Sie auch functools verwenden könnte und tun es in einer Linie (ich es in zwei Lesbarkeit zu verbessern, aber es ist immer noch „eine Zeile“):

import string 
import functools 

def remove_punctuation(text): 
    return functools.reduce(lambda newtext, punc: newtext.replace(punc, ''), 
     punctuation, text).lower().split() 
+0

Die Zuweisung besteht nicht darin, alle Interpunktionen zu entfernen, sondern die führende und nachgestellte Interpunktion für jedes Wort zu entfernen, dh 'word.strip (string.punctuation)' ist korrekt, nur dass sie eine neue Zeichenkette zurückgibt (Strings sind in Python unveränderlich) und die Return-Anweisung ist am falschen Ort. –