用python进行字符编码以取代';u2019&x27;与';

用python进行字符编码以取代';u2019&x27;与';,python,python-2.7,unicode,character-encoding,lxml,Python,Python 2.7,Unicode,Character Encoding,Lxml,我已经尝试了很多方法将其编码为最终结果“BACK RUSHIN”,最重要的字符是右撇号“ 我想使用Python的一些内置函数来获得最终结果,在这些函数中,普通字符串和unicode字符串之间没有区别 这就是我用来检索字符串的代码:str(unicode(etree.tostring(root.xpath('path')[0],method='text',encoding='utf-8'),errors='ignore')).strip() 结果是:“BACK RUSHIN”省略了撇号“ 另一种方

我已经尝试了很多方法将其编码为最终结果
“BACK RUSHIN”
,最重要的字符是右撇号

我想使用Python的一些内置函数来获得最终结果,在这些函数中,普通字符串和unicode字符串之间没有区别

这就是我用来检索字符串的代码:
str(unicode(etree.tostring(root.xpath('path')[0],method='text',encoding='utf-8'),errors='ignore')).strip()

结果是:
“BACK RUSHIN”
省略了撇号

另一种方法是:
root.xpath('path/text()')

结果是:
u'BACK RUSHIN\u2019'
在python中

最后,如果我尝试:
u'BACK RUSHIN\u2019'.encode('ascii','replace')

结果是:
'backrushin'

请不要替换函数,我想使用pythons编解码器库。 也不要打印字符串,因为它被保存在变量中

谢谢


所以您想从XML中读取
(右单引号),但要将其转换为
(撇号)?这不是编解码器的问题。正如罗布所暗示的,这是两个完全不同的角色。将一个转换为另一个是替换问题,而不是编码问题。(名称错误的)
unidecode
模块只不过是一组从非ASCII字符到类似ASCII字符的替换,用于当您必须与无法使用Unicode的系统进行接口时的极端情况。否则,以这种方式破坏字符串通常是个坏主意。值得一提的是,您必须安装
unidecode
>>> import unidecode
>>> unidecode.unidecode(u'BACK RUSHIN\u2019')
"BACK RUSHIN'"