解码包含编码字符的字符串

时间:2014-10-08 21:07:23

标签: python encoding decoding

我有一些字符串,我将其作为测试数据粘贴到我的脚本中。字符串来自包含编码字符的电子邮件,并且它会抛出SyntaxError。到目前为止,我还没有找到解决这个问题的方法。当我print repr(string)时,我得到了这些字符串:

'Total Value for 1st Load \xe2\x80\x93 approx. $75,200\n'
'Total Value for 2nd Load \xe2\x80\x93 approx. $74,300\n'

运行我的脚本时会弹出此错误:

SyntaxError: Non-ASCII character '\xe2' in file <filename> on line <line number>, but no 
encoding declared; see http://www.python.org/peps/pep-2063.html

当我打印包含编码字符的行时,我得到了这个:

'Total Value for 2nd Load – approx. $74,300'

当我从电子邮件中复制数据时,数据看起来像这样:

'Total Value for 1st Load – approx. $75,200'
'Total Value for 2nd Load – approx. $74,300'

从我的搜索开始,我相信它是用utf-8编码的,但我不知道如何处理这些数据是基于一些字符被编码的事实,但大多数都不是(也许?)。我尝试过不同的解决方案&#34;到目前为止我找到了。包括在我的脚本顶部添加# -*- coding: utf-8 -*-并且脚本挂起......它没有做任何事情:(

如果有人可以提供有关如何处理此方案的一些信息,那将是惊人的。

我尝试使用string.encode()string.decode()进行解码和编码,根据我在Google上找到的内容使用不同的编码,但这并没有解决问题。

我更喜欢python解决方案,因为我正在处理的项目要求人们将数据粘贴到GUI中的文本字段中,然后处理该数据。其他解决方案建议将数据粘贴到word或记事本之类的内容中,将其保存为纯文本,然后从该文件中进行另一次复制/粘贴。这有点多了。有没有人知道处理这个问题的pythonic方法?

1 个答案:

答案 0 :(得分:1)

>>> msg = 'Total Value for 1st Load \xe2\x80\x93 approx. $75,200\n'
>>> print msg.decode("utf-8")
Total Value for 1st Load – approx. $75,200

确保使用可以支持这些字符的空闲内容(IE dos终端可能不会!)