使用python查找文本文件中标记的频率

时间:2017-10-20 13:44:46

标签: python python-3.x python-textprocessing

我有一个标签文件,其中包含我需要在mobydick文件中找到的单词的频率,基本上我必须从标签中提取一个单词并在mobydick中搜索单词并打印单词及其频率,我有完成下面的程序,但我收到一个错误,因为我能够从标签中提取单词,但无法在mobydick中检查相同。我附上了颂歌和错误。如果有人可以提供帮助,那将会有很大帮助。谢谢。

import pandas as pd
import numpy as np
import nltk, re, pprint
import string

from collections import Counter
from nltk.tokenize import sent_tokenize,word_tokenize
from urllib import request

with open('tags.txt','r') as f:

    for line in f:
        for word in line.split():
            if word in open('MobyDick.txt').read():
                c=Counter(word)
            print(c)

,错误是

UnicodeDecodeError Traceback(最近一次调用最后一次)  in()       f为9行:      10为line.split()中的单词: ---> 11如果单词处于打开状态(' MobyDick.txt')。read():      12 c =计数器(字)      13

C:\ Users \ Pratik \ Anaconda3 \ lib \ encodings \ cp1252.py in decode(self,input,final)      21类IncrementalDecoder(codecs.IncrementalDecoder):      22 def解码(self,input,final = False): ---> 23返回codecs.charmap_decode(input,self.errors,decoding_table)[0]      24      25类StreamWriter(Codec,codecs.StreamWriter):

UnicodeDecodeError:' charmap'编解码器不能解码位置7237中的字节0x9d:字符映射到

1 个答案:

答案 0 :(得分:0)

似乎open函数无法解码您的文件。 在打开文件时尝试指定编解码器,否则将使用系统默认编解码器打开文件,该编解码器取决于操作系统。 e.g

if word in open(MobyDick.txt, encoding='utf8').read():
   ...