Python re.sub()不保留空格和新行
我有一个包含以下行的xml文件:Python re.sub()不保留空格和新行,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我有一个包含以下行的xml文件: <CREATION_DATE>2009-12-20T10:47:07.000Z</CREATION_DATE> 带日期的字段已正确替换,但在该过程中,尾随的新行和缩进将丢失。我尝试使用.encode('string-escape')将ligne和sub函数的结果转换为原始字符串,但没有成功。我是python的noob,但我对regex有点习惯,我真的看不出我做错了什么。替换XML元素文本的另一种更简单、更可靠的方
<CREATION_DATE>2009-12-20T10:47:07.000Z</CREATION_DATE>
带日期的字段已正确替换,但在该过程中,尾随的新行和缩进将丢失。我尝试使用
.encode('string-escape')
将ligne
和sub
函数的结果转换为原始字符串,但没有成功。我是python的noob,但我对regex有点习惯,我真的看不出我做错了什么。替换XML元素文本的另一种更简单、更可靠的方法是使用XML解析器。甚至还有:
>将xml.etree.ElementTree作为ET导入
>>>
>>>s='2009-12-20T10:47:07.000Z'
>>>root=ET.fromstring(s)
>>>root.find(“创建日期”).text='XXX'
>>>ET.tostring(根)
“XXX”
替换XML元素文本的另一种更简单、更可靠的方法是使用XML解析器。甚至还有:
>将xml.etree.ElementTree作为ET导入
>>>
>>>s='2009-12-20T10:47:07.000Z'
>>>root=ET.fromstring(s)
>>>root.find(“创建日期”).text='XXX'
>>>ET.tostring(根)
“XXX”
如注释中所述,变量ligne
在代码的其他地方用ligne=ligne.strip()。。。不过,我并没有删除我的问题,因为alecxe对xml模块的回答非常有用。如注释中所述,变量ligne
在代码的其他地方被去掉了空格和新行,ligne=ligne.strip()
。。。不过,我并没有删除我的问题,因为alecxe对xml模块的回答非常有用。无法重现。你确定还有什么东西没有过滤掉缩进和尾随换行符吗?我目前正在一个解释器中进行测试,它按照我的意愿工作,我认为在处理变量ligne
…的过程中上游出现了一些错误,这两种情况都无法重现。我已经和它做了你想要的python 2.7无法复制。你确定还有什么东西没有过滤掉缩进和尾随换行符吗?我目前正在一个解释器中进行测试,它按照我的意愿工作,我认为在处理变量ligne
…的过程中上游出现了一些错误,这两种情况都无法重现。我已经在python 2.7中实现了您想要的功能
<CREATION_DATE>XXX</CREATION_DATE>
if '</CREATION_DATE>' in ligne:
out_lines[i] = re.sub(r'(^.*<CREATION_DATE>).*(</CREATION_DATE>.*$)', r'\1XXX\2', ligne)
>>> import xml.etree.ElementTree as ET
>>>
>>> s = '<ROOT><CREATION_DATE>2009-12-20T10:47:07.000Z</CREATION_DATE></ROOT>'
>>> root = ET.fromstring(s)
>>> root.find("CREATION_DATE").text = 'XXX'
>>> ET.tostring(root)
'<ROOT><CREATION_DATE>XXX</CREATION_DATE></ROOT>'