648 Stimmen

Wie wird eine Zeichenkette in eine Liste aufgeteilt?

Ich möchte meine Python-Funktion, um einen Satz (Eingabe) zu teilen und speichern jedes Wort in einer Liste. Mein derzeitiger Code teilt den Satz auf, speichert die Wörter aber nicht als Liste. Wie kann ich das tun?

def split_line(text):

    # split the text
    words = text.split()

    # for each word in the line:
    for word in words:

        # print the word
        print(words)

552voto

nstehr Punkte 7720
text.split()

Dies sollte ausreichen, um jedes Wort in einer Liste zu speichern. words ist bereits eine Liste mit den Wörtern des Satzes, so dass die Schleife überflüssig ist.

Zweitens, es könnte ein Tippfehler sein, aber Sie haben Ihre Schleife ein wenig durcheinander gebracht. Wenn Sie wirklich wollen, um append verwenden, wäre es sein:

words.append(word)

no

word.append(words)

481voto

zalew Punkte 9965

Zerlegt die Zeichenkette in text auf alle aufeinanderfolgenden Leerzeichenfolgen.

words = text.split()      

Aufteilung der Zeichenkette in text auf Begrenzungszeichen: "," .

words = text.split(",")   

Die Variable words ist eine list und enthalten die Wörter aus text auf das Trennzeichen aufgeteilt.

94voto

gimel Punkte 78080

str.split()

Rückgabe a Liste der Wörter in der Zeichenkette, mit sep als Trennzeichen ... Wird sep nicht angegeben oder ist es None, wird ein anderer Aufteilungsalgorithmus angewandt: Läufe von aufeinanderfolgenden Leerzeichen werden als ein einziges Trennzeichen betrachtet, und das Ergebnis enthält keine leeren Zeichenfolgen am Anfang oder Ende, wenn die Zeichenkette führende oder nachgestellte Leerzeichen enthält.

line="a sentence with a few words" line.split() ['a', 'sentence', 'with', 'a', 'few', 'words']

62voto

tgray Punkte 8420

Je nachdem, was Sie mit Ihrer Satz-als-Liste vorhaben, sollten Sie sich die Bausatz für natürliche Sprache . Es beschäftigt sich intensiv mit der Textverarbeitung und -auswertung. Sie können es auch verwenden, um Ihr Problem zu lösen:

import nltk
words = nltk.word_tokenize(raw_sentence)

Dies hat den zusätzlichen Vorteil, dass die Interpunktion herausgetrennt wird.

Ejemplo:

>>> import nltk
>>> s = "The fox's foot grazed the sleeping dog, waking it."
>>> words = nltk.word_tokenize(s)
>>> words
['The', 'fox', "'s", 'foot', 'grazed', 'the', 'sleeping', 'dog', ',', 
'waking', 'it', '.']

So können Sie alle unerwünschten Satzzeichen herausfiltern und nur Wörter verwenden.

Bitte beachten Sie, dass die anderen Lösungen mit string.split() sind besser, wenn Sie keine komplexen Manipulationen an dem Satz vornehmen wollen.

[Bearbeitet]

37voto

Colonel Panic Punkte 125419

Wie wäre es mit diesem Algorithmus? Text an Leerzeichen aufteilen, dann Satzzeichen abschneiden. Dadurch werden Satzzeichen am Wortrand sorgfältig entfernt, ohne dass Apostrophe innerhalb von Wörtern beschädigt werden, wie z. B. we're .

>>> text
"'Oh, you can't help that,' said the Cat: 'we're all mad here. I'm mad. You're mad.'"

>>> text.split()
["'Oh,", 'you', "can't", 'help', "that,'", 'said', 'the', 'Cat:', "'we're", 'all', 'mad', 'here.', "I'm", 'mad.', "You're", "mad.'"]

>>> import string
>>> [word.strip(string.punctuation) for word in text.split()]
['Oh', 'you', "can't", 'help', 'that', 'said', 'the', 'Cat', "we're", 'all', 'mad', 'here', "I'm", 'mad', "You're", 'mad']

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X