Функция ввода и возвращение количества слов в наборе данных - PullRequest
0 голосов
/ 21 февраля 2020

Я должен написать функцию для ввода любого слова, чтобы искать в названии песни, а затем возвращать количество песен, которые содержат слово. Если слово не найдено, верните заявление о том, что слова не найдены. Мой вывод выполняется оператор elif, а затем мой оператор if. Я опубликую, как выглядит мой внешний вид.

import csv
word_count = 0
with open("billboard_songs.csv") as data:
    word = input("Enter any word: ")
    for line in data:
        line_strip = line.split(",")
        if word.casefold() in line_strip[1]:
            word_count += 1
            print(word_count, "songs were found to contain", word.casefold(), "in this data set")
        elif word_count == 1:
            print("No songs were found to contain the words: ", word.casefold())

Текущий вывод:

Не найдено ни одной песни, содержащей слова: war

Нет песен Было найдено, что они содержат слова: war

Не найдено ни одной песни, содержащей слова: war

Не найдено ни одной песни, содержащей слова: war

Найдено 2 песни чтобы содержать войну в этом наборе данных

Было найдено, что 3 песни содержат войну в этом наборе данных

4 песни были найдены, чтобы содержать войну в этом наборе данных

5 песен были обнаружено, что в этом наборе данных содержится война

6 песен были обнаружены в этом наборе данных * Найдено 1025 *

7 песен, содержащих войну в этом наборе данных

8 песен было обнаружено, что в этом наборе данных содержится война

1 Ответ

1 голос
/ 21 февраля 2020

Существует много проблем с кодом.

  • Вы должны использовать уже импортированную библиотеку csv, не разделяя ее запятыми ,.
  • Ваше утверждение if действительно не соответствует ожиданиям.

Вы должны сделать что-то похожее на следующее:

import csv  # Use it!

Сохранить слово как переменную:

word = input("Enter any word: ").casefold()

Надеюсь, у вашего CSV есть заголовки ... используйте csv.DictReader, если это так:

reader = csv.DictReader(open('billboard_songs.csv', 'r'))

Перебирайте каждую песню в CSV ... с line_strip[1], Похоже, что ваша песня лирика во втором поле. Так что я через все это. Вам также следует установить переменную для хранения количества песен, содержащих слово на этом этапе:

word_count = 0
for lyrics in reader['song_lyrics']:  # replace 'song_lyrics' with your CSV header for the field with song lyrics
    # Check the word is present

Сначала выполнить итерацию по всему CSV, перед выводом на печать.

    if word in lyrics:
        word_count += 1

Один раз что завершает, вы можете использовать оператор if / else для печати любого желаемого результата:

if word_count == 0:
    print('No songs were found to contain the words: {}'.format(word))
else:
    # at least one set of lyrics had the word!
    print('{} song(s) were found to contain {} in this data set'.format(word_count, word))

Или вместо for l oop и всего остального ниже reader, вы можете используйте sum следующим образом:

word_count = sum([word in lyrics for lyrics in reader['song_lyrics'])

Тогда вы можете просто использовать обобщенный оператор c print:

print('There were {} songs that contained the word: {}'.format(word_count, word))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...