您的位置:首页 > 其它

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 9: ordinal not in range(128)

2018-02-27 15:44 573 查看
# coding=utf-8
import time
from selenium import webdriver

class GetSubString(object):
def get_search_result(self):
driver = webdriver.Ie()
driver.maximize_window()
driver.implicitly_wait(8)

driver.get('http://www.baidu.com')
driver.find_element_by_id('kw').send_keys('selenium')
time.sleep(1)
search_result_string = driver.find_element_by_xpath("//*/div[@class='nums']").text
print(search_result_string)

new_string = search_result_string.split('约')[1]
print(new_string)

last_string = new_string.split('个')[0]
print(last_string)

getstring = GetSubString()
getstring.get_search_result()
上面的程序在编译后报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 9: ordinal not in range(128)
将:
new_string = search_result_string.split('约')[1]
last_string = new_string.split('个')[0]
改成:
new_string = search_result_string.split(u'约')[1]
last_string = new_string.split(u'个')[0]
后再编译就没问题了。
汉字和特殊符号属于Unicode编码,在python环境中代码本身是用Ascii进行解码的,代码中有Ascii无法解码的内容要告知python怎么解码,
在上面的代码中,最上面一行加入了# coding=utf-8,那么当前的编码方式就变成了utf-8,同样也无法解码Unicode编码,所以在前面加上
u是告知系统此内容要以Unicode的方式解码。
以上内容只是我自己的理解,在解决问题的此件参考的百度资源链接在下方附上,可自行参考。

Unicode编码——中文和特殊字符的范围:http://blog.csdn.net/leopadus/article/details/68961344
类似问题的解决链接:https://segmentfault.com/q/1010000005941382?_ea=958769
Python字符编码:http://python.jobbole.com/85482/
人机交互之字符编码:http://selfboot.cn/2014/08/28/character_encoding/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐