Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python LXML ValueError和UTF字符串_Python_Encoding_Utf 8_Lxml_Cyrillic - Fatal编程技术网

Python LXML ValueError和UTF字符串

Python LXML ValueError和UTF字符串,python,encoding,utf-8,lxml,cyrillic,Python,Encoding,Utf 8,Lxml,Cyrillic,我正在制作一个小Python脚本,用于大规模编辑HTML文件(替换图像链接等)。现在,HTML文件包含一些西里尔文,这意味着我必须对字符串UTF-8进行编码。我替换HTML中的所有链接,并键入tag.set(数据)和BOOM,控制台显示: ValueError:所有字符串必须与XML兼容:Unicode或ASCII,无空字节或控制字符 我怎样才能解决这个问题?我很确定没有任何控制字符或空字节。我正在使用Python 2.7.11 value = tag.get('value').encode('

我正在制作一个小Python脚本,用于大规模编辑HTML文件(替换图像链接等)。现在,HTML文件包含一些西里尔文,这意味着我必须对字符串UTF-8进行编码。我替换HTML中的所有链接,并键入tag.set(数据)和BOOM,控制台显示:

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

我怎样才能解决这个问题?我很确定没有任何控制字符或空字节。我正在使用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)

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

请提供一些你迄今为止尝试的示例代码添加代码,Gerard请不要在你的任何帖子中添加紧急请求,或者在你的读者群主要由志愿者组成的网站上的任何地方。这种要求很高的语气很可能会让人们不愿意回答你——出于这个原因,我特意把它删掉了。作为提醒,我投了反对票。请不要再添加它-这称为“编辑”,通常会在此处显示版主标志。这将有助于查看触发错误的示例数据。感谢您的建议(halfer!)