Как разделить строку на список?
Я хочу, чтобы моя функция Python разделила предложение (ввод) и сохранила каждое слово в списке. Мой текущий код разбивает предложение, но не сохраняет слова в список. Как мне это сделать?
def split_line(text):
# split the text
words = text.split()
# for each word in the line:
for word in words:
# print the word
print(word)
9 ответов:
text.split()
этого должно быть достаточно, чтобы хранить каждое слово в списке.
words
это уже список слов из предложения, поэтому нет необходимости в цикле.во-вторых, это может быть опечатка, но у вас есть ваш цикл немного напутал. Если вы действительно хотите использовать append, то будет:
words.append(word)
не
word.append(words)
разбивает строку
text
на любых последовательных запусках пробелов.words = text.split()
разделить строку
text
на разделитель:","
.words = text.split(",")
переменная слов будет
list
и содержат слова изtext
разделить на разделитель.
.split ()
возвратить список слов в строке, используя sep в качестве разделителя ... Если sep не указан или отсутствует, применяется другой алгоритм разбиения: запуски последовательных пробелов рассматриваются как один разделитель, и результат не будет содержать пустых строк в начале или конце, если строка имеет начальные или конечные пробелы.
>>> line="a sentence with a few words" >>> line.split() ['a', 'sentence', 'with', 'a', 'few', 'words'] >>>
В зависимости от того, что вы планируете делать с вашим предложением-как-список, вы можете посмотреть на Естественный Язык Взял Комплект. Он имеет дело в значительной степени с обработкой и оценкой текста. Вы также можете использовать его для решения вашей проблемы:
import nltk words = nltk.word_tokenize(raw_sentence)
Это имеет дополнительное преимущество разделения препинания.
пример:
>>> 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', '.']
Это позволяет отфильтровать все знаки препинания вы не хотите и использовать только слова.
обратите внимание, что другие решения с помощью
string.split()
лучше, если вы не планируете делать какие-либо сложные манипуляции с Сентанс.
Как насчет этого алгоритма? Разделить текст на пробелы, затем обрезать знаки препинания. Это тщательно удаляет знаки препинания с края слов, не нанося вреда апострофам внутри слов, таких как
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']
я хочу, чтобы моя функция python разделила предложение (ввод) и сохранила каждое слово в списке
The
str().split()
метод делает это, он берет строку, разбивает ее на список:>>> 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
проблемы у вас возникли из-за опечатки, вы писали
print(words)
вместоprint(word)
:переименовать
word
переменнаяcurrent_word
, вот что у тебя было:def split_line(text): words = text.split() for current_word in words: print(words)
..когда вы должны сделано:
def split_line(text): words = text.split() for current_word in words: print(current_word)
если по какой-то причине вы хотите вручную построить список в цикле for, вы бы использовали list
append()
метод, возможно, потому, что вы хотите, чтобы в нижнем регистре все слова (например):my_list = [] # make empty list for current_word in words: my_list.append(current_word.lower())
или более немного аккуратнее, используя список-понимание:
my_list = [current_word.lower() for current_word in words]
Я думаю, что вы запутались из-за опечатки.
заменить
print(words)
сprint(word)
внутри вашего цикла, чтобы каждое слово, напечатанное на другую строку
можно использовать sta (строку в массив)
pip install sta
затем
>>> import sta >>> sta("some words on a list") ['some', 'words', 'on', 'a', 'list']