在Post Response中查找unicode单词

时间:2014-09-13 12:32:48

标签: python post http-post python-requests

我使用POST方法自动登录我的帐户,我想做点什么。

现在我想检查字符串خطا是否不在登录页面打印ok

但它不起作用。为什么呢?

post_data = {'email':email, 'password':password}
post_response = requests.post(url='http://test.come/login', data=post_data)
if post_response.text.find(u'\xd8\xae\xd8\xb7\xd8\xa7') == -1:
    print 'OK'

1 个答案:

答案 0 :(得分:2)

您正在尝试将UTF-8字节放入unicode字符串中。从UTF-8解码或测试实际文本:

>>> '\xd8\xae\xd8\xb7\xd8\xa7'.decode('utf8')
u'\u062e\u0637\u0627'
>>> print '\xd8\xae\xd8\xb7\xd8\xa7'.decode('utf8')
خطا

所以使用:

if u'\u062e\u0637\u0627' not in post_response.text:

或如果您有declared a suitable source encoding

if u'خطا' not in post_response.text:

if '\xd8\xae\xd8\xb7\xd8\xa7'.decode('utf8') not in post_response.text:

或者,如果原始响应也以UTF-8编码,甚至:

if '\xd8\xae\xd8\xb7\xd8\xa7' not in post_response.content:

您可能想要了解Python和Unicode。我建议: