Python XML 兼容的字符串
Python XML Compatible String
我正在使用 lxml 编写 XML 文件,但遇到控制字符问题。我正在从文件中读取文本以分配给包含控制字符的元素。当我 运行 脚本时,我收到此错误:
ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters
所以我写了一个小函数来用'?'替换控制字符,当我查看生成的XML时,控制字符似乎是新行0x0A。有了这些知识,我写了一个函数来编码控制字符:
def encodeXMLText(text):
text = text.replace("&", "&")
text = text.replace("\"", """)
text = text.replace("'", "'")
text = text.replace("<", "<")
text = text.replace(">", ">")
text = text.replace("\n", "
")
text = text.replace("\r", "
")
return text
这仍然是 returns 与之前相同的错误。我想保留新行,所以简单地剥离它们对我来说不是一个有效的选择。不知道我现在做错了什么。我正在寻找一种使用 lxml 执行此操作的方法,类似于:
ruleTitle = ET.SubElement(rule,'title')
ruleTitle.text = encodeXMLText(titleText)
我读过的其他问题要么不使用 lxml,要么不将换行符 (/n) 和换行符 (/r) 用作控制字符
我打印出字符串以查看导致问题的具体字符并注意到这些字符:文本中的 \xe2\x80\x99。所以问题是编码,将代码更改为这样解决了我的问题:
ruleTitle = ET.SubElement(rule,'title')
ruleTitle.text = titleText.decode('UTF-8')
我正在使用 lxml 编写 XML 文件,但遇到控制字符问题。我正在从文件中读取文本以分配给包含控制字符的元素。当我 运行 脚本时,我收到此错误:
ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters
所以我写了一个小函数来用'?'替换控制字符,当我查看生成的XML时,控制字符似乎是新行0x0A。有了这些知识,我写了一个函数来编码控制字符:
def encodeXMLText(text):
text = text.replace("&", "&")
text = text.replace("\"", """)
text = text.replace("'", "'")
text = text.replace("<", "<")
text = text.replace(">", ">")
text = text.replace("\n", "
")
text = text.replace("\r", "
")
return text
这仍然是 returns 与之前相同的错误。我想保留新行,所以简单地剥离它们对我来说不是一个有效的选择。不知道我现在做错了什么。我正在寻找一种使用 lxml 执行此操作的方法,类似于:
ruleTitle = ET.SubElement(rule,'title')
ruleTitle.text = encodeXMLText(titleText)
我读过的其他问题要么不使用 lxml,要么不将换行符 (/n) 和换行符 (/r) 用作控制字符
我打印出字符串以查看导致问题的具体字符并注意到这些字符:文本中的 \xe2\x80\x99。所以问题是编码,将代码更改为这样解决了我的问题:
ruleTitle = ET.SubElement(rule,'title')
ruleTitle.text = titleText.decode('UTF-8')