我有一堆XML文件分批转储到磁盘。 当我试着练习它们时,我发现有些人在属性中插入了一个控制字符
看起来是这样的:
<root ^KIND="A"></root>
当它看起来像这样的时候:
<root KIND="A"></root>
在这种情况下,它很容易修复,只是一些regexp魔法:
import re
xml = re.sub(r'<([^>]*)\v([^>]*)>', r'<\1K\2>', xml)
但后来需求发生了变化,我不得不单独将文档转储到磁盘。 当然,在存钱之前我会先把替代品生下来,这样我就不会再有这个问题了
你会看到很多这样的文件,数百万
所以,我准备再次从中提取一些数据
但这一次我遇到了一个新错误:
<root KIND="A"><CLASSIFICATION></CLASSIFICATIO^N></root>
当它看起来像这样的时候:
<root KIND="A"><CLASSIFICATION></CLASSIFICATION></root>
我不知道为什么我总是收到这些错误,也不知道为什么总是插入“ctrl字符”。到目前为止,这可能是纯粹的运气
我在第一个案例中使用的regexp通常不会磨损,^K转换为垂直标签,因此我可以再次匹配它。但是有什么东西可以过滤掉任何ctrl字符吗
尝试使用转换表从ctrl-a到ctrl-Z删除:
印刷品:
相关问题 更多 >
编程相关推荐