#python #strip
#python #Стриптиз
Вопрос:
Я пытаюсь решить эту проблему уже несколько часов и не могу найти правильное решение, вот в чем вопрос:
Напишите цикл, который создает новый список слов, используя строковый метод для удаления слов из списка, созданного в задаче 3, всех знаков препинания в начале и конце. Подсказка: библиотека строк, которая импортирована выше, содержит константу с именем пунктуация. Три строки кода.
Вот мой код:
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
Комментарии:
1. Итак, в чем именно проблема?
2. вычисление и возврат частоты, с которой указанное слово (список слов) появляется в тексте (тексте).
3. 1)
strip()
не изменяет исходный текст, а создает новый текст. 2) выreturn
ошиблись местом.
Ответ №1:
В вашем коде есть пара битов, которые… ну, я не совсем уверен, почему они там, если честно, ха-ха. Давайте разберемся с этим вместе!
Я предполагаю, что вам дали некоторый текст: text = "My hovercraft is full of eels!"
. Давайте разделим это на слова, сделаем слова строчными и удалим все знаки препинания. Мы знаем, что нам нужны string.punctuation
и str.split()
, и вы также поняли, что str.replace()
это полезно. Итак, давайте используем их и получим наш результат!
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()
Мне кажется, что функция состоит всего из трех строк, и это то, что вы сказали, что хотели!
Для продвинутого читателя вы также можете использовать functools
и сделать это в одной строке (я разделил ее на две для удобства чтения, но это все равно «одна строка»):
import string
import functools
def remove_punctuation(text):
return functools.reduce(lambda newtext, punc: newtext.replace(punc, ''),
punctuation, text).lower().split()
Комментарии:
1. Назначение состоит не в том, чтобы удалить всю пунктуацию, а в том, чтобы удалить начальную и конечную пунктуацию в каждом слове, т.Е.
word.strip(string.punctuation)
Правильно, просто оно возвращает новую строку (строки неизменяемы в Python), а оператор return находится в неправильном месте.