我完全对gae感到困惑。我有一个脚本,它执行一个发布请求(使用来自 Google App Engine api 的 urlfetch)作为响应,我们得到一个 cp1251 编码的 html 页面。
然后我使用 .decode('cp1251') 对其进行解码并使用 lxml 进行解析。
我的代码在我的本地机器上运行良好:
import re
import leaf #simple wrapper for lxml
weekdaysD={u'понедельник':1, u'вторник':2, u'среда':3, u'четверг':4, u'пятница':5, u'суббота':6}
document = leaf.parse(leaf.strip_symbols(leaf.strip_accents(html_in_cp1251.decode('cp1251'))))
table=document.get('table')
trs=table('tr') #leaf syntax
for tr in trs:
tds=tr.xpath('td')
for td in tds:
if td.colspan=='3':
curweek=re.findall('\w+(?=\-)', td.text)[0]
curday=weekdaysD[td.text.split(u',')[0]]
但是当我将它部署到 gae 时,我得到:
curday=weekdaysD[td.text.split(u',')[0]]
KeyError: u'\xd0\xb2\xd1\x82\xd0\xbe\xd1\x80\xd0\xbd\xd0\xb8\xd0\xba'
那里的非 unicode 字符如何?为什么本地一切正常?我已经尝试了在我的代码中放置的所有解码\编码变体 - 没有任何帮助。我现在被困了几天。
UPD:另外,如果我在 GAE 上添加到我的脚本:
print type(weekdaysD.keys()[0]), type(td.text.split(u',')[0])
它以“unicode”的形式返回。所以,我相信 html 被正确解码。会不会是 GAE 上的 lxml ?