【发布时间】:2010-02-19 06:36:29
【问题描述】:
我在尝试将正则表达式应用于以 latin-1 (ISO-8859-1) 编码的某些字符串时遇到问题。
我要做的是通过 HTTP POST 从以 ISO-8859-1 编码的页面向我的 python 应用程序发送一些数据,并在我的 python 脚本中使用正则表达式对数据进行一些解析。
网页使用 jQuery 将数据发送到服务器,我使用 .text() 方法从页面中获取文本。将数据发送回服务器后,如下所示:re.compile(r"^[\s,]*(\d*\s*\d*\/*\d)[\s,]*") - 不幸的是,我的正则表达式中的 \s 与我的数据不匹配,我将问题追溯到 html 页面使用   的事实被编码为0xA0(不间断空格)并发送到服务器。出于某种原因,我的脚本似乎没有将该字符解释为空格并且不匹配。根据 python [documentation][1] 看起来这应该可以工作,所以我必须在这里遇到编码问题。
然后我想尝试将字符串转换为 unicode 并将其传递给正则表达式,因此我尝试查看转换字符串时会发生什么:print(unicode(data, 'iso-8859-1'))。
不幸的是,我收到了这个错误:
UnicodeEncodeError at /script/
'ascii' codec can't encode character u'\xa0' in position 122: ordinal not in range(128)
不过我很困惑——我显然不是在尝试使用 ASCII 解码——python 是否在尝试使用 ASCII 进行解码,即使我显然在传递另一个编解码器?
【问题讨论】:
-
如果这些解决方案之一回答了您的问题,您应该将它们标记为已接受
-
谢谢,作为一名 n00b,我昨晚一直在寻找“已接受”或“已回答”按钮,但没有找到。多一点刺激使我发现了复选标记。