Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.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
使用“解析xml”;“格式不好”;python中的字符_Python_Xml_Regex - Fatal编程技术网

使用“解析xml”;“格式不好”;python中的字符

使用“解析xml”;“格式不好”;python中的字符,python,xml,regex,Python,Xml,Regex,我从一个应用程序中获取xml数据,我想用python解析它: #!/usr/bin/python import xml.etree.ElementTree as ET import re xml_file = 'tickets_prod.xml' xml_file_handle = open(xml_file,'r') xml_as_string = xml_file_handle.read() xml_file_handle.close() xml_cleaned = re.sub(u'

我从一个应用程序中获取xml数据,我想用python解析它:

#!/usr/bin/python

import xml.etree.ElementTree as ET
import re

xml_file = 'tickets_prod.xml'
xml_file_handle = open(xml_file,'r')
xml_as_string = xml_file_handle.read()
xml_file_handle.close()

xml_cleaned = re.sub(u'[^\x01-\x7f]+',u'',xml_as_string)
root = ET.fromstring(xml_cleaned)
它适用于带有示例数据的较小数据集,但当我转到真实的实时数据时,我得到

xml.parsers.expat.ExpatError: not well-formed (invalid token): line 364658, column 72
查看xml文件,我看到第364658行:

WARNING - (1 warnings in check_logfiles.protocol-2013-05-28-12-53-46) - ^[[0:36mnotice: Scope(Class[Hwsw]): Not required on ^[[0m</description>
WARNING-(检查日志文件中的1个警告。协议-2013-05-28-12-53-46)-^[[0:36mnotice:Scope(Class[Hwsw]):在^[[0m]上不需要
我猜是
^[
让python窒息了——它在vim中也被突出显示为蓝色。现在我希望我可以用我的正则表达式替换来清理数据,但那没有起作用

最好的办法是修复生成xml的应用程序,但这超出了范围。因此,我需要按原样处理数据。我如何解决这个问题?我可以接受扔掉“非法”字符的做法。

您已经做到了:

xml_cleaned = re.sub(u'[^\x01-\x7f]+',u'',xml_as_string)
但是字符
^[
可能是Python的
\x1b
。如果xml.parser.expat阻塞了它,您只需清理更多,只接受0x20(空格)以下的一些字符。例如:

xml_cleaned = re.sub(u'[^\n\r\t\x20-\x7f]+',u'',xml_as_string)
你已经做到了:

xml_cleaned = re.sub(u'[^\x01-\x7f]+',u'',xml_as_string)
但是字符
^[
可能是Python的
\x1b
。如果xml.parser.expat阻塞了它,您只需清理更多,只接受0x20(空格)以下的一些字符。例如:

xml_cleaned = re.sub(u'[^\n\r\t\x20-\x7f]+',u'',xml_as_string)
你已经做到了:

xml_cleaned = re.sub(u'[^\x01-\x7f]+',u'',xml_as_string)
但是字符
^[
可能是Python的
\x1b
。如果xml.parser.expat阻塞了它,您只需清理更多,只接受0x20(空格)以下的一些字符。例如:

xml_cleaned = re.sub(u'[^\n\r\t\x20-\x7f]+',u'',xml_as_string)
你已经做到了:

xml_cleaned = re.sub(u'[^\x01-\x7f]+',u'',xml_as_string)
但是字符
^[
可能是Python的
\x1b
。如果xml.parser.expat阻塞了它,您只需清理更多,只接受0x20(空格)以下的一些字符。例如:

xml_cleaned = re.sub(u'[^\n\r\t\x20-\x7f]+',u'',xml_as_string)

我知道这是相当古老的,但在下面的url上有一个所有主要字符及其编码的列表


我知道这很旧,但是在下面的url上留有一个包含所有主要字符及其编码的列表


我知道这很旧,但是在下面的url上留有一个包含所有主要字符及其编码的列表


我知道这很旧,但是在下面的url上留有一个包含所有主要字符及其编码的列表


您可以尝试使用beautiful soup,它在为我转义无效字符方面做得非常好。看起来有些过于聪明的家伙希望在其tty上有粗体或彩色的输出以显示此警告。您应该删除转义到以下“m”的所有内容。您可以尝试使用beautiful soup,它在转义中做得非常好对我来说是有效的字符。看起来有些过于聪明的家伙想在他的tty上显示粗体或彩色的警告。你应该删除从转义到以下“m”的所有内容。你可以尝试使用beautiful soup,这对我来说是非常好的转义无效字符。看起来有些过于聪明的家伙想要粗体或彩色的输出此警告的tty上的彩色输出。您应该删除从转义到以下“m”的所有内容。您可以尝试使用beautiful soup,这在为我转义无效字符方面做得非常好。看起来有些过于聪明的家伙希望在其tty上为此警告提供粗体或彩色输出。您应该删除转义到下面的“m”。只是想知道:有没有一个好的资源,我可以在其中查找像
^[
有时会被表示出来?我不止一次遇到这样的问题,我想知道将来如何处理这些问题。换句话说,Python系统地使用
\xNN
,除了
\t\n\r
。在Unix上,字符0到31通常被写成
\
\A
。。。,
\Z
\[
\
\]
\^
\\\
,即在反斜杠后使用64到95个字符。还有其他表示法,但我无法为您提供指南……只是想知道:有没有一个好的资源,我可以在那里查找像
这样的特殊字符^[
有时会被表示出来?我不止一次遇到这样的问题,我想知道将来如何处理这些问题。换句话说,Python系统地使用
\xNN
,除了
\t\n\r
。在Unix上,字符0到31通常被写成
\
\A
。。。,
\Z
\[
\
\]
\^
\\\
,即在反斜杠后使用64到95个字符。还有其他表示法,但我无法为您提供指南……只是想知道:有没有一个好的资源,我可以在那里查找像
这样的特殊字符^[
有时会被表示出来?我不止一次遇到这样的问题,我想知道将来如何处理这些问题。换句话说,Python系统地使用
\xNN
,除了
\t\n\r
。在Unix上,字符0到31通常被写成
\
\A
。。。,
\Z
\[
\
\]
\^
\\\
,即在反斜杠后使用64到95个字符。还有其他表示法,但我无法为您提供指南……只是想知道:有没有一个好的资源,我可以在那里查找像
这样的特殊字符^[
有时会被表示出来?我不止一次遇到这样的问题,我想知道将来如何处理这些问题。换句话说,Python系统地使用
\xNN
,除了
\t\n\r
。在Unix上,字符0到31通常被写成
\
\A
。。。,
\Z