【问题标题】:write() in python/spyder -- 'charmap' codec encoding character u'\u0142' --- UnicodeEncodeErrorpython/spyder 中的 write() -- 'charmap' 编解码器编码字符 u'\u0142' --- UnicodeEncodeError
【发布时间】:2015-04-01 17:29:10
【问题描述】:

我在使用程序(Python 2.7)时遇到了一点问题,在检查了网站上的其他类似问题后,仍然找不到解决方案。 我还将展示我尝试过的解决方案/想法。

我不确定这是否重要,但我正在使用的数据集是 Yelp 挑战数据集。我不打算向 Yelp Challenge 提交任何作品。

首先,我将一个 json 文件加载到 Pandas 数据框中。然后下面的代码为了获取文本(100k 评论),将其小写,将其词干,将词干文本重新连接到一行/观察中,并将其写入文本文件:

reviews = df.text.tolist()
reviews = [x.lower() for x in reviews]
revsub=reviews[0:100000]

lrev = [[stem(word) for word in re.compile("\W+",re.UNICODE).split(sentence)] for sentence in revsub]
testt = [" ".join(review) for review in lrev]

f2 = open("yelpReviewsParagragh.txt", "w")
f2.write("\n".join(str(x) for x in testt))
f2.close()

这给出了以下错误:

f2 = open("yelpReviewsParagragh.txt", "w")
f2.write("\n".join(str(x) for x in testt))
f2.close()
Traceback (most recent call last):

  File "<ipython-input-55-bf9e5d409f4e>", line 2, in <module>
    f2.write("\n".join(str(x) for x in testt))

  File "<ipython-input-55-bf9e5d409f4e>", line 2, in <genexpr>
    f2.write("\n".join(str(x) for x in testt))

  File "C:\Users\Owner\Anaconda\lib\encodings\cp1252.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_table)

UnicodeEncodeError: 'charmap' codec can't encode character u'\u0142' in position 918: character maps to <undefined>

尝试的解决方案:

经过一番研究,我意识到这是 Unicode 中的小写拉丁字母 L。很奇怪,因为我已经进入了 cp1252.py 的源代码来查看解码表,而小写拉丁文 L 在那里,只是字符不同。

所以,我天真地尝试将 u'\u0142' 添加到未解决问题的解码表中。在研究问题时,我还看到有一种方法可以在出现这些错误时“忽略”或“替换”字符。所以,我尝试再次将源代码更改为:

""" Python Character Mapping Codec cp1252 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1252.TXT' with gencodec.py.

"""#"

import codecs

### Codec APIs

class Codec(codecs.Codec):

def encode(self,input,errors='strict'):
    return codecs.charmap_encode(input,errors,encoding_table)

def decode(self,input,errors='strict'):
    return codecs.charmap_decode(input,errors,decoding_table)

到: ... def 编码(self,input,errors='replace'):

或 ... def 编码(自我,输入,错误='忽略'):

但是两者都不起作用。还有什么我可以做的吗?

【问题讨论】:

    标签: python unicode encoding utf-8


    【解决方案1】:

    使用 open 函数创建文件时,也尝试传递编码

     f2 = open("yelpReviewsParagragh.txt", "w", encoding="utf-8")
    

    【讨论】:

      猜你喜欢
      • 2015-01-21
      • 2022-09-08
      • 1970-01-01
      相关资源
      最近更新 更多