Python программа для подсчета слов, средней длины слова, частоты слова и частоты слов, начинающихся с букв алфавита - PullRequest
0 голосов
/ 26 августа 2018

Нужно написать программу на Python, которая анализирует файл и считает:

  • Количество слов
  • Средняя длина слова
  • Сколько разкаждое слово встречается
  • Сколько слов начинаются с каждой буквы алфавита

У меня есть код для выполнения первых двух вещей:

with open(input('Please enter the full name of the file: '),'r') as f:
     w = [len(word) for line in f for word in line.rstrip().split(" ")]
     total_w = len(w)
     avg_w = sum(w)/total_w

print('The total number of words in this file is:', total_w)
print('The average length of the words in this file is:', avg_w)

Но я не уверен, как поступить с остальными.Любая помощь приветствуется.

Кстати, когда я говорю «Сколько слов начинается с каждой буквы алфавита», я имею в виду, сколько слов начинаются с «А», сколько начинается с «В», сколько начинаетсяс "C" и т. д. вплоть до "Z".

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Есть много способов для достижения этой цели, более продвинутый подход предполагает первоначальный простой сбор текста и его слов, а затем работу с данными с помощью инструментов ML / DS, с помощью которых вы можете экстраполировать больше статистики (например, "новый абзац начинается, в основном, с X слов "/" X словам в основном предшествует / следует Y слов "и т. д.)

Если вам просто нужна очень базовая статистика, вы можете собрать ее, просматривая каждое слово и выполнитьрасчеты в конце, например:

stats = {
  'amount': 0,
  'length': 0,
  'word_count': {},
  'initial_count': {}
}

with open('lorem.txt', 'r') as f:
  for line in f:
    line = line.strip()
    if not line:
      continue
    for word in line.split():
      word = word.lower()
      initial = word[0]

      # Add word and length count
      stats['amount'] += 1
      stats['length'] += len(word)

      # Add initial count
      if not initial in stats['initial_count']:
        stats['initial_count'][initial] = 0
      stats['initial_count'][initial] += 1

      # Add word count
      if not word in stats['word_count']:
        stats['word_count'][word] = 0
      stats['word_count'][word] += 1

# Calculate average word length
stats['average_length'] = stats['length'] / stats['amount']

Демо онлайн здесь

0 голосов
/ 26 августа 2018

Интересная задача, которую вам дали, я сделал предложение для вопроса 3, сколько раз слово встречается внутри строки.Этот код вообще не оптимален, но он работает.

также я использовал файл text.txt

edit: заметил, что забыл создать список словкак он был сохранен в моей оперативной памяти

with open('text.txt', 'r') as doc:
    print('opened txt')
    for words in doc:
        wordlist = words.split()     

for numbers in range(len(wordlist)):
        for inner_numbers in range(len(wordlist)):
            if inner_numbers != numbers:
                if wordlist[numbers] == wordlist[inner_numbers]:
                    print('word: %s == %s' %(wordlist[numbers], wordlist[inner_numbers]))

Ответ на четвертый вопрос: этот вопрос не был сложным после того, как вы создали список со всеми словами, поскольку строки можно рассматривать как списоки вы можете легко получить первую букву строки, просто набрав string[0], и если это список со строками stringList[position of word][0]

for numbers in range(len(wordlist)):
        if wordlist[numbers][0] == 'a':
            print(wordlist[numbers])
...