Python XML解析-^H字符/符号?
我在清理一些XML以便用Python和etree解析它时遇到了一段非常糟糕的时间。基本上,在我的Python脚本读取它之前,我正在尝试转义每个字符串条目中提供给我的所有特殊字符Python XML解析-^H字符/符号?,python,xml,string,parsing,Python,Xml,String,Parsing,我在清理一些XML以便用Python和etree解析它时遇到了一段非常糟糕的时间。基本上,在我的Python脚本读取它之前,我正在尝试转义每个字符串条目中提供给我的所有特殊字符 'xml.parsers.expat.ExpatError: not well-formed' 因此,在生成XML字符串条目时,我使用sed将特殊字符替换为它们的转义版本,或者仅使用空格,而我真的不在乎 但现在在生成的XML中,我看到了一个^H字符,vim将其高亮显示为蓝色 我尝试转义^,但没有成功,角色仍然存在,因此
'xml.parsers.expat.ExpatError: not well-formed'
因此,在生成XML字符串条目时,我使用sed
将特殊字符替换为它们的转义版本,或者仅使用空格
,而我真的不在乎
但现在在生成的XML中,我看到了一个^H
字符,vim将其高亮显示为蓝色
我尝试转义^
,但没有成功,角色仍然存在,因此我认为它一定是某种复合特殊角色
唉,为什么这么糟糕。无论如何,感谢您的帮助。
^H
是表示嵌入文本中的退格字符(ASCII字符8)的常用方法;如果您已经在使用sed
/bash
进行过滤,则可以执行以下操作:
cat infile | sed s/$'\b'// > outfile
尽管如此,我还是不认为你的输入文件中有一个^H是件好事。。。您是如何生成它的?首先,您是如何将退格字符放入XML的?它可能是退格字符(ASCII 8或Control-H)。如果不知道你正在做什么样的清理,或者没有看到一些文件,就很难确定。老实说。。我只是从一些项目目录中读取日志文件。你能帮我解释一下你的解决方案吗?我不熟悉sed/bash的东西。@YoungMoney:我简化/更正了代码,现在应该很简单了(
$'\b'
就是用bash的方式输入你的^H
)。还有一个问题要确定-所以我可以用这个来修改一个文件,即infle
与outfile
相同吗?编辑-因为我试过了,现在我有了一个空文件…@YoungMoney:nosed
读取文件(或stdin)并输出到stdout;流重定向操作符(
)会在启动管道之前截断文件,因此最终会得到一个空文件。您必须在sed
完成后输出到临时文件并覆盖原始文件。