2016-11-13 2 views
0

Я пытаюсь подсчитать количество раз, когда слова из файла отображаются в другом файле. Я был направлен на приведенную ниже ссылку, которая помогла, но все еще не выполняет желаемого долга. Кто-нибудь может мне помочь?Заглавные слова из одного файла, в другом Python

https://codereview.stackexchange.com/questions/144074/program-to-count-vowels

def count_happyW(file): 
    hap_count = 0 
    for Hwords in file.readlines(): 
     line = file.readline() 
     while line != "": 
      for item in Hwords: 
       if item in file: 
        count_happyW[item] += 1 
        return hap_count 

Я также попытался

line = file.readline() 
total = 1 * [len(h_words) for line in file.readline()] 
for token in file.readlines(): 
    while line != "":  
     line = file.readline()  
     for item in h_words:   
      if item in file:    
       total = [1] * len(item) 

+0

Не могли бы вы добавить вход и ожидаемый результат? В настоящее время вопрос остается неясным. – niemmi

+0

Вы пытаетесь подсчитать слова в соответствующем файле? Или вы пытаетесь подсчитать, сколько раз появляется определенное слово? – siavashk

+0

@niemmi извините за это! Я могу добавить ожидаемый ввод, для первой попытки он ничего не печатает.Но для моей другой попытки он будет распечатывать, сколько строк находится в файле, в котором проверка текста содержит слова, но не количество слов в каждой строке файла, а общее количество ключевых слов, которые я первоначально имел в файле – HelloWorld4382

ответ

0

yourwords.txt содержит слова, которые вы разыскивающим разделенных пробелами, мои содержание:

apple orange bananna

yourfile.txt ваш файл, который вы ищете в:

apple orange bananna

an apple on the orange tree

wordcount = {} 
with open('yourwords.txt', 'r') as f1, open('yourfile.txt', 'r') as f2: 
    words = f1.read().split() 
    wordcount = { i:0 for i in words} 
    for line in f2: 
     line_split = line.split() 
     for word in line_split: 
      if word in wordcount: 
      wordcount[word] += 1 

print(wordcount) 

Выход:

{'bananna': 1, 'apple': 2, 'orange': 2}

+0

Хорошо, я пытаюсь это сделать! – HelloWorld4382

+0

Ну, это работает немного лучше, чем у меня. но вместо этого печатает, что все ключевые слова, которые я ищу = 0 .... У меня есть около 100 строк файла, которые я проверяю, содержат ключевые слова, а некоторые из них делают, но все они говорят 0 – HelloWorld4382

+0

Жаль, что я не понимаете свой комментарий? !!! Пожалуйста, объясните, пожалуйста, – Serjik

0

Основываясь на ваш вопрос, я буду считать вас есть два файла. Первый файл будет содержать слова, которые вы хотите найти, разделенные новой строкой. Второй файл будет содержать текст.

Файл 1: (words.txt)

dog 
cat 
went 

Файл 2: (story.txt)

Today my cat and dog ran out of my backyard. 
This is not the first time my dog has ran away. 
Last time he went to the dog park and then went to my neighbors house. 

Сначала вы хотели бы создать словарь, содержащий каждое из ключевых слов в words.txt файл. Вы бы указали значение этого количества раз, которое оно было замечено во втором файле.

wordDB = { 'dog': 0, 'cat': 0, 'went' : 0} 

Чтобы сделать это динамически вы бы сначала создать пустой словарь, а затем цикл строк в файле words.txt.

wordDB = {} 
wordFile = open('words.txt','r') 
for line in wordFile.readlines(): 
    word = line.replace('\n','') #This replaces the new line character 
    if not(word in wordDB.keys()): #Checks that the word doesn't already exist. 
     wordDB[word] = 0 # Adds the word to the DB. 
wordFile.close() 

Теперь нам нужно открыть второй файл и перебрать по каждой строке в этом файле. Для каждой строки в этом файле мы будем проверять каждую клавишу в wordDB, и если она существует, увеличивайте ее количество соответственно.

storyFile = open('story.txt','r') 
checkWordList = wordDB.keys() 
for line in storyFile.readlines(): 
    wordList = line.replace('\n','').split(' ') 
    for eachWord in checkWordList: 
     if eachWord in wordList: 
      wordDB[eachWord] = (wordDB[eachWord] + wordList.count(eachWord)) 

storyFile.close() 

Теперь вам просто нужно перебрать в checkWordList один больше времени и распечатать значения из wordDB.

for eachWord in checkWordList: 
    print "%s : %s" % (eachWord, wordDB[eachWord]) 

Вы получите вывод:

went: 2 
dog: 3 
cat: 1 
+0

Я получаю это: AttributeError: объект «set» не имеет атрибутных «ключей». Однако у меня есть несколько строк в файле «story.txt», и для каждого подобного мне нужно проверить, ключевые слова в нем. и если он добавляет его к общей сумме. так что, если одна из строк имеет 4 ключевых слова, то общая сумма для этой строки равна 4. 4. Если другая строка имеет 5, то общая сумма для этой строки равна 5. – HelloWorld4382

+0

Ive работает над этим в течение двух недель, но ничего не происходит рабочий и его действительно подчеркивающий – HelloWorld4382

+0

?? Привет, не могли бы вы помочь? – HelloWorld4382

Смежные вопросы