LXML ValueError和UTF字符串

时间:2016-01-10 14:13:29

标签: python encoding utf-8 lxml cyrillic

我正在制作一个Python脚本,用于批量编辑HTML文件(替换图像链接等)。现在,HTML文件包含一些Cyrillic,这意味着我必须编码字符串UTF-8。我替换HTML中的所有链接,并键入tag.set(data)和BOOM,控制台显示:

  

ValueError:所有字符串必须与XML兼容:Unicode或ASCII,无NULL字节或控制字符。

我该如何解决这个问题?我很确定没有任何控制字符或NULL字节。我正在使用Python 2.7.11。

value = tag.get('value').encode('utf-8')
    #h = HTMLParser.HTMLParser()
    #value = h.unescape(value)
    urls = regex.finditer(value)
    if urls is None: continue
    for turl in urls:
        ufile = turl.group().rsplit('/', 1)[-1]
        value = value.replace(turl.group(), '/'+newsrc+'/'+ufile)
        #value = cgi.escape(value, True)
        value = value.replace('\0', '')
    tag.set('value', value)

1 个答案:

答案 0 :(得分:0)

这很容易。您只需要删除encode('utf-8')部分。你看LXML不喜欢人们搞乱字符串的字符编码。只需将其保留为LXML即可将文本转换为合适的编码,一切都会好的。 :)