来自txt文件程序的字数

use*_*762 19 python

我用以下代码计算一个txt文件的字:

#!/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();
Run Code Online (Sandbox Code Playgroud)

这给了我这样的输出:

>>> 
goat {'goat': 2, 'cow': 1, 'Dog': 1, 'lion': 1, 'snake': 1, 'horse': 1, '': 1, 'tiger': 1, 'cat': 2, 'dog': 1}
Run Code Online (Sandbox Code Playgroud)

但我希望以下列方式输出:

word  wordcount
goat    2
cow     1
dog     1.....
Run Code Online (Sandbox Code Playgroud)

此外,我在输出()中得到一个额外的符号.我该如何删除?

Tim*_*ker 42

您遇到的有趣符号是UTF-8 BOM(字节顺序标记).要摆脱它们,请使用正确的编码打开文件(我假设您使用的是Python 3):

file = open(r"D:\zzzz\names2.txt", "r", encoding="utf-8-sig")
Run Code Online (Sandbox Code Playgroud)

此外,为了计数,您可以使用collections.Counter:

from collections import Counter
wordcount = Counter(file.read().split())
Run Code Online (Sandbox Code Playgroud)

显示它们也很容易:

>>> for item in wordcount.items(): print("{}\t{}".format(*item))
...
snake   1
lion    2
goat    2
horse   3
Run Code Online (Sandbox Code Playgroud)


bis*_*nga 31

#!/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
for k,v in wordcount.items():
    print k, v
Run Code Online (Sandbox Code Playgroud)