python 2.7 中的字节函数只接受一个参数



我知道 python 3.7 中bytes()最多需要 3 个参数,但是我使用的是 python 2.7,我正在清理文本后尝试计数 n-gram,问题是bytes函数,但它给了我以下错误。

我尝试使用encode("utf-8")对其进行编码,但它没有解决问题,我还尝试只保留"内容",但一旦它碰到一个奇怪的字符(即拉丁符号或数学符号),它就会崩溃。

from urllib import urlopen
from bs4 import BeautifulSoup
import re,string
def cleanInput(input):
    input=re.sub('n+'," ",input)
    input=re.sub("[[0-9]*]","",input)
    input=re.sub(" +"," ",input)
    input=bytes(input).encode("utf-8")
    input=input.decode("ascii","ignore")
    cleanInput=[]
    input=input.split(" ")
    for item in input:
        item.strip(string.punctuation)
        if len(item)>1 or item.lower()=='i' or item.lower()=="a":
            cleanInput.append(item)
    return cleanInput

我希望用一行相同的行为替换命令bytes(content,"utf-8"),这是我得到的错误 UnicodeEncodeError: 'ascii' codec can't encode character u'xa0' in position 90: ordinal not in range(128)

对 Unicode 进行编码,并对字节进行解码。 如果您使用错误的编解码器,Python 2 将使用ascii编解码器隐式转换为正确的类型,这会产生您看到的错误。 请注意,Python 3 不会这样做,因此更容易发现错误。

如果input是类型 unicode ,则只需使用 input.encode('utf8').decode('ascii','ignore') 删除 U+00FF>的所有 Unicode 代码点。

如果input是类型 str ,则只需使用 input.decode('ascii','ignore')

P.S. 不要使用 Python 内置函数的名称作为变量名称。 input()是内置的。

相关内容

  • 没有找到相关文章

最新更新