gpt4 book ai didi

python - 使用 python 或 PowerShell 从 XML 代码中删除额外字符

转载 作者:太空宇宙 更新时间:2023-11-04 11:13:05 27 4
gpt4 key购买 nike

我有许多 XML 文件保存在如下结构中。

#$Dummy$#<MAIN location='Loc-01'>
--- Other tags & Elements ---
</MAIN>

注意开头的字符 #$Dummy$#。这是有目的地插入的,以保护任何解析和读取数据的入侵者。除此之外,其余数据都是纯 xml。文件以 .xml 扩展名保存。我知道如何使用 Element Tree 解析 xml。

在这种情况下 Element Tree 抛出以下错误

ParseError:格式不正确(无效标记):第 1 行,第 2 列

目前我们使用任何文本编辑器打开文件并手动删除字符。如何使用 PythonPower Shell 删除此代码。因为有 1000 个文件要解析。

最佳答案

在这种简单的情况下,text 通过正则表达式处理 听起来是正确的方法,如以下 PowerShell 解决方案(根据定义,您不能给定格式正确的 XML 之前的无关文本,按原样将文件解析为 XML:

Get-ChildItem -Filter *.xml | ForEach-Object {
$file = $_.FullName
(Get-Content -Raw $file) -creplace '^#\$Dummy\$#' | Set-Content -NoNewLine $file
}

重要:Set-Content使用默认字符编码,而不考虑原始输入文件的编码;在 Windows PowerShell 中,这是事件的 ANSI 代码页;更明智的是,它是 PowerShell Core 中的无 BOM UTF-8。根据需要使用 -Encoding 参数。

  • Get-ChildItem -Filter *.xml 返回当前文件夹中的所有*.xml文件;根据需要调整此命令;见Get-ChildItem's help .

  • Get-Content -Raw $file 将整个文件作为单个字符串读入内存;见Get-Content's help

  • -creplace 区分大小写 (c) 匹配文字字符串 #$Dummy$# 字符串(正则表达式转义为#\$Dummy\$#,因为 $ 否则具有特殊含义)在输入的最开始 (^) 并隐式替换它使用空字符串(因为没有给出替换操作数),这有效地删除了它。

    • 有关 PowerShell 的 -replace 运算符的更多信息,请参阅 this answer .
  • Set-Content 将(可能修改过的)字符串写回 $file-NoNewLine (PSv5+) 防止附加换行符。

关于python - 使用 python 或 PowerShell 从 XML 代码中删除额外字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57716794/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com