python - 在python中使用LXML时“\n”和“'”的转义问题
问题描述
我正在尝试使用 LXML 处理 XML 文件中的字符串。问题是输出文件无法转义某些特殊字符(例如“\n”和“'”)。这是我需要处理的文本:
输入文本:
IF [Calculation_1] = 'Day-1' THEN [begintime] + 1
ELSEIF[Calculation_1] < 'Day-2' THEN [begintime] + 2
ELSEIF [Calculation_1] > "Day-3" THEN [begintime] + 3
ELSE [begintime]
END
实际输出文本:
IF [Calculation_1] = 'Day-1' THEN [begintime] + 1
ELSEIF[Calculation_1] < 'Day-2' THEN [begintime] + 2
ELSEIF [Calculation_1] > "Day-3" THEN [begintime] + 3
ELSE [begintime]
END
预期的输出文本:
IF [Calculation_1] = 'Day-1' THEN [begintime] + 1 ELSEIF[Calculation_1] < 'Day-2' THEN [begintime] + 2 ELSEIF [Calculation_1] > "Day-3" THEN [begintime] + 3 ELSE [begintime] END
我的python脚本:
from lxml import etree as ET
Name_with_single_quote= """IF [Calculation_1] = 'Day-1' THEN [begintime] + 1
ELSEIF[Calculation_1] < 'Day-2' THEN [begintime] + 2
ELSEIF [Calculation_1] > "Day-3" THEN [begintime] + 3
ELSE [begintime]
END"""
Name_with_single_quote = Name_with_single_quote.replace("\n", " ").replace("<", "<").replace("'", "'").replace(">",">").replace("\"", """)
Name_with_single_quote = str(Name_with_single_quote)
xml = """<?xml version="1.0"?>
<column role="dimension" type="nominal" name="[Calculation_1]" datatype="boolean" caption="">
<calculation formula=""/>
</column>"""
tree = ET.fromstring(xml)
formula = tree.find('.//calculation')
formula.set('formula', Name_with_single_quote)
from xml.dom import minidom
xmlstr = minidom.parseString(ET.tostring(tree)).toprettyxml()
xmlstr = '\n'.join(list(filter(lambda x: len(x.strip()), xmlstr.split('\n'))))
with open('test_for_esc_result.xml', "w") as f:
f.write(xmlstr)
有谁知道如何逃避那些特殊字符?谢谢你的帮助!
解决方案
推荐阅读
- javascript - 如何使用 html 、 javascript 、 php 获取上传的文件路径
- python - Python: Algorithm to find similar strings in a list
- html - 为什么我没有写H1之前有项目符号?
- android - 每当我更改其属性时,Android 线性布局都会不断重新排序子级
- android - MaterialDatePicker todayInUtcMilliseconds 方法返回不正确的日期
- node.js - 如何为所有响应添加中间件?(express.js)
- laravel - 如何选择用户的电子邮件来发送电子邮件?
- docker - Makefile 条件 PHONY 目标执行
- javascript - TypeError: DATA.total_cases 未定义,找不到错误?
- bash - Bash 脚本以 sudo 密码作为变量打开新的 gnome 终端