Я уже повернул в этом задании, но оно сводит меня с ума. Нам дали метод лишения пунктуации из словаря с использованием цикла «для» с этим примером: < /p>
import string
quote = " The joy of coding Python should be in seeing short, concise, readable classes that express " \
"a lot of action in a small amount of clear code -- not in reams of trivial code that bores the " \
"reader to death. "
print(quote)
word_list = quote.split()
for word in word_list:
word = word.strip(string.punctuation)
print(word)
< /code>
Наше назначение на неделю состояло в том, чтобы взять с собой адрес Геттисберга, сохраненный в виде файла .txt, и создать словарь, который имеет количество того, сколько раз появляются все слова. Моя первая попытка я сделал это: < /p>
import string
def word_counter(speech, word_dictionary):
for word in speech:
if word in word_dictionary:
word_dictionary[word] += 1
else:
word_dictionary[word] = 1
def process_line(word_list, word_dictionary):
##split speech into list of words
words_split = word_list.split()
##remove puncation from list
for word in words_split:
word = word.strip(string.punctuation)
else:
word_counter(word, word_dictionary)
# Printing extra Values
pretty_print(word_dictionary)
def pretty_print(word_dictionary):\
##clean up values that shouldn't be there
##word_dictionary.pop("")
##word_dictionary.pop("19")
##word_dictionary.pop("1863")
##word_dictionary.pop("Abraham")
##word_dictionary.pop("Lincoln")
##Calculating how many words are in the dictionary
word_count_sum = len(word_dictionary.items())
print("Length of dictionary: ", word_count_sum)
for key, value in sorted(word_dictionary.items(), key=lambda kv: kv[1], reverse=True):
print("%s: %s" % (key, value))
def main():
##creating empty dictionary
word_count_dict = {}
##uploading file
gba_file = open('gettysburg.txt','r')
data = gba_file.read()
process_line(data,word_count_dict)
if __name__ == '__main__':
main()
< /code>
То, что происходит с этим, единственные записи в словаре - 1,9,8,3. Я сделал заявление о печати, и он проходит через всю петлю. Он также проходит через весь список после раскола. Я смог завершить задание с помощью: < /p>
for word in words_split:
for character in word:
if character in string.punctuation:
word = word.replace(character,"")
input_list.append(word)
< /code>
Но я пытаюсь учиться, поэтому я хочу знать, что я делаю не так. Кто -нибудь может помочь? Извините за длительный пост и дайте мне знать, если вам нужен файл .txt для решения этого.
Подробнее здесь: https://stackoverflow.com/questions/753 ... -correctly
Код Python для удаления пунктуации из словаря неправильно функционирует ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Есть ли у Python встроить проверку строк для специальных символов и/или пунктуации?
Anonymous » » в форуме Python - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-