【问题标题】:to find the frequency of the tags in the text file by using python使用python查找文本文件中标签的频率
【发布时间】:2023-04-11 10:07:01
【问题描述】:

我有一个标签文件,其中包含我需要在 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(最近一次调用最后一次) 在 () 9 表示 f 中的行: 10 对于 line.split() 中的单词: ---> 11 如果单词在 open('MobyDick.txt').read(): 12 c=计数器(字) 13

解码中的C:\Users\Pratik\Anaconda3\lib\encodings\cp1252.py(self, input, final) 21类IncrementalDecoder(codecs.IncrementalDecoder): 22 def解码(自我,输入,最终=假): ---> 23 返回 codecs.charmap_decode(input,self.errors,decoding_table)[0] 24 25 类StreamWriter(Codec,codecs.StreamWriter):

UnicodeDecodeError:“charmap”编解码器无法解码位置 7237 中的字节 0x9d:字符映射到

【问题讨论】:

  • 你昨天问了同样的问题。答案还是一样。
  • 嗨,亚历克西斯,谢谢,只是我是这个平台的新手,所以对我来说这是一个很大的挑战,但如果你能帮助我知道可以计算频率的命令,那就太好了这个词,我使用的计数器是否正确?我认为 utf8 正在工作,感谢 francois。
  • 由于您是该平台的新手,请花点时间浏览网站的帮助部分。它解释了如何提问,以及当你得到(或没有得到)答案时该怎么做。
  • 附言。获得所需帮助后,请勿删除您的问题。

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


【解决方案1】:

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

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

【讨论】:

  • 从报错信息可以看出系统默认是cp1252(Windows)。重要的是文件的正确编码——谁知道 OP 下载了哪个版本的 Moby Dick?也许您的猜测是正确的,它是 UTF8。 (但要修复代码中的语法错误。)
猜你喜欢
  • 1970-01-01
  • 2013-02-02
  • 2020-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
相关资源
最近更新 更多