我想替换XML文件中的空格字符,例如:
从:
<UserDescription>
<userName>Test User 1</userName>
</UserDescription>
为:
<UserDescription>
<userName>Test_User_1</userName>
</UserDescription>
首选使用sed,因为这是目前最可行的选择。
感谢任何建议或反馈。感谢
答案 0 :(得分:3)
不要使用正则表达式解析HTML,请使用正确的XML / HTML解析器。
根据编译理论,无法使用基于finite state machine的正则表达式解析HTML。由于HTML的层次结构,您需要使用pushdown automaton并使用LALR等工具操作YACC语法。
您可以使用以下其中一项:
saxon-lint(我自己的项目)
检查:Using regular expressions with HTML tags
xmlstarlet edit -L -u '//userName' \
-x 'translate(//userName/text(), " ", "_")' file.xml
$ cat file.xml
<?xml version="1.0"?>
<UserDescription>
<userName>Test_User_1</userName>
</UserDescription>
答案 1 :(得分:0)
from lxml import etree
myXML = 'file.xml'
tree = etree.parse(myXML)
root = tree.getroot()
code = root.xpath("//userName")
code[0].text = code[0].text.replace(' ', '_')
print(code[0].text)
etree.ElementTree(root).write(myXML, pretty_print=True)
$ cat file.xml
<?xml version="1.0"?>
<UserDescription>
<userName>Test_User_1</userName>
</UserDescription>
答案 2 :(得分:0)
使用perl也是为了好玩:
n*n*n*n