2015-04-23 2 views
1

Я добавил значения листа excel в список с помощью xlrd. Я назвал список a_master. У меня есть текстовый файл со словами, которые я хочу подсчитать вхождения этого списка в этот список (я назвал этот файл словарь и их 1 слово в строке). Вот код:Подсчет числа слов, отображаемых в списке с использованием Python

with open("dictionary.txt","r") as f: 
for line in f: 
    print "Count " + line + str((a_master).count(line)) 

По некоторым причинам, хотя, граф возвращается с нуля для каждого счета слово, которое существует в текстовом файле. Если я выписать счет одного из этих слов себя:

print str((a_master).count("server")) 

Он считает, что случаи не problem.I не также пытались

print line 

для того, чтобы увидеть, если он видит слова в Файл dictionary.txt правильно, и это так.

+0

Не могли бы вы предоставить пример файла? – ka2m

+0

Это дубликат http://stackoverflow.com/questions/8742732/python-number-of-word-occurrments –

+0

@ tommy.carstensen: Неточный дубликат. Пожалуйста, прочитайте мой ответ. – Abhijit

ответ

1

Линии, считанные из файла, завершаются символом новой строки. В конце может также быть пробел. Лучше удалить любые пробелы, прежде чем делать, если поиск

with open("dictionary.txt","r") as f: 
    for line in f: 
     print "Count " + line + str((a_master).count(line.strip())) 

Примечание В идеале, поиск список является линейным и не может быть оптимальным в большинстве случаев. Я думаю, collections.Counter подходит для ситуации, как вы изобразили.

Re интерпретировать список как словарь, где ключ является элемент, и значение является возникновение при прохождении его через collections.Counter, как показано ниже

a_master = collections.Counter(a_master) 

и вы можете переписать код, как

from itertools import imap 
with open("dictionary.txt","r") as f: 
    for line in imap(str.strip, f): 
     print "Count {} {}".format(line, a_master[line]) 
+0

Это прекрасно работает, спасибо вам большое! – Danny

+0

@ Danny: Если это отвечает на ваш вопрос, пожалуйста, подумайте о его принятии. – Abhijit

+0

Еще один вопрос на самом деле. Чтобы подсчитать количество слов в списке, я разбил каждое слово в списке. Но что, если я хочу посчитать случаи «программной сети». Как мне это сделать? Должен ли я переписать, как это предложение появляется в файле dictionary.txt? В моем txt-файле есть смесь как отдельных слов, так и предложений. – Danny

0

Использование collections.Counter():

import re 
import collections 
words = re.findall(r'\w+', open('dictionary.txt').read().lower()) 
collections.Counter(words) 

Почему т кстати, его вопрос с меткой xlrd?

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