【发布时间】: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