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)

17voto

dbr Punkte 158949

Ich möchte meine Python-Funktion, um einen Satz (Eingabe) zu teilen und speichern jedes Wort in einer Liste

El str().split() Methode nimmt eine Zeichenkette und zerlegt sie in eine Liste:

>>> the_string = "this is a sentence"
>>> words = the_string.split(" ")
>>> print(words)
['this', 'is', 'a', 'sentence']
>>> type(words)
<type 'list'> # or <class 'list'> in Python 3.0

Das Problem, das Sie haben, liegt an einem Tippfehler: Sie schrieben print(words) anstelle von print(word) :

Umbenennung der word Variable zu current_word hatten Sie das hier:

def split_line(text):
    words = text.split()
    for current_word in words:
        print(words)

wenn Sie es hätten tun sollen:

def split_line(text):
    words = text.split()
    for current_word in words:
        print(current_word)

Wenn Sie aus irgendeinem Grund eine Liste in der for-Schleife manuell erstellen möchten, würden Sie die Liste append() Methode, z. B. weil Sie alle Wörter in Kleinbuchstaben schreiben wollen:

my_list = [] # make empty list
for current_word in words:
    my_list.append(current_word.lower())

Oder, etwas eleganter, mit einer Liste-Verständnis :

my_list = [current_word.lower() for current_word in words]

16voto

Tarwin Punkte 522

shlex hat eine .split() Funktion. Sie unterscheidet sich von str.split() da es Anführungszeichen nicht beibehält und eine zitierte Phrase als einzelnes Wort behandelt:

>>> import shlex
>>> shlex.split("sudo echo 'foo && bar'")
['sudo', 'echo', 'foo && bar']

NB: Es funktioniert gut für Unix-ähnliche Befehlszeilenstrings. Sie funktioniert nicht für die Verarbeitung natürlicher Sprache.

16voto

BlackBeard Punkte 9394

Wenn Sie alle Zeichen einer Wort/Satz in einer Liste, tun Sie dies:

print(list("word"))
#  ['w', 'o', 'r', 'd']

print(list("some sentence"))
#  ['s', 'o', 'm', 'e', ' ', 's', 'e', 'n', 't', 'e', 'n', 'c', 'e']

4voto

Aditya Mukherji Punkte 8875

Ich glaube, Sie sind wegen eines Tippfehlers verwirrt.

Ersetzen Sie print(words) con print(word) innerhalb Ihrer Schleife, damit jedes Wort in einer anderen Zeile gedruckt wird

1voto

thrinadhn Punkte 756

Trennen Sie die Wörter, ohne die Apostrophe in den Wörtern zu beschädigen. Bitte finden Sie die Eingabe_1 und Eingabe_2 des Mooreschen Gesetzes

def split_into_words(line):
    import re
    word_regex_improved = r"(\w[\w']*\w|\w)"
    word_matcher = re.compile(word_regex_improved)
    return word_matcher.findall(line)

#Example 1

input_1 = "computational power (see Moore's law) and "
split_into_words(input_1)

# output 
['computational', 'power', 'see', "Moore's", 'law', 'and']

#Example 2

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

split_into_words(input_2)
#output
['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