Estou a contar a palavra de um ficheiro txt com o seguinte código:
#!/usr/bin/python
file=open("D:\\zzzz\\names2.txt","r+")
wordcount={}
for word in file.read().split():
if word not in wordcount:
wordcount[word] = 1
else:
wordcount[word] += 1
print (word,wordcount)
file.close();
isto está a dar-me o resultado desta forma:
>>>
goat {'goat': 2, 'cow': 1, 'Dog': 1, 'lion': 1, 'snake': 1, 'horse': 1, '': 1, 'tiger': 1, 'cat': 2, 'dog': 1}
mas quero a produção da seguinte forma:
word wordcount
goat 2
cow 1
dog 1.....
Também estou a receber um símbolo extra na saída (
). Como é que posso remover isto?
Os símbolos engraçados que você're encontra são um UTF-8 BOM (Byte Order Mark). Para se livrar deles, abra o ficheiro utilizando a codificação correcta (I'm assumindo que você're em Python 3):
file = open(r"D:\zzzz\names2.txt", "r", encoding="utf-8-sig")
Além disso, para a contagem, pode utilizar collections.Counter
:
from collections import Counter
wordcount = Counter(file.read().split())
Expô-los também é fácil:
>>> for item in wordcount.items(): print("{}\t{}".format(*item))
...
snake 1
lion 2
goat 2
horse 3
import sys
file=open(sys.argv[1],"r+")
wordcount={}
for word in file.read().split():
if word not in wordcount:
wordcount[word] = 1
else:
wordcount[word] += 1
for key in wordcount.keys():
print ("%s %s " %(key , wordcount[key]))
file.close();