Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除文件的特定部分_Python_File_Python 3.x - Fatal编程技术网

Python 删除文件的特定部分

Python 删除文件的特定部分,python,file,python-3.x,Python,File,Python 3.x,我在Windows8.1上的Python3.2下工作,我有一个XML文件,如果这个文件存在,我想删除其中的一个特定部分。以下是我需要做的可视化示例: 我想知道我们如何删除图片中的选定部分,知道可能会出现或不会出现多次错误 import re f=open("some.xml",'r') f.close() x=f.read() y=re.sub(r"<object2>(?:(?!<\/object2>)[\s\S])*<\/object2>","",x) f=

我在Windows8.1上的Python3.2下工作,我有一个XML文件,如果这个文件存在,我想删除其中的一个特定部分。以下是我需要做的可视化示例:

我想知道我们如何删除图片中的选定部分,知道可能会出现或不会出现多次错误

import re
f=open("some.xml",'r')
f.close()
x=f.read()
y=re.sub(r"<object2>(?:(?!<\/object2>)[\s\S])*<\/object2>","",x)
f=open("some.xml",'w')
f.write(y)
f.close()
你可以用re试试这个


比vks的答案略长,但不需要导入。

您可以使用xml.etree.ElementTree:


您真正需要的是XML解析器。使用许多库中的一个来解析您的输入XML开始使用,使用生成的内部表示,修改它,并将新的XML文件写入磁盘。我正在查看它~为什么被否决?嗯,这实际上不起作用,我发现了这个错误:我刚刚注意到我在编辑代码时犯了一个小错误,但是一旦修复了它,结果就不会改变。它部分工作,我想删除的部分已经被删除,但是文档的其余部分也被删除了。^^我忘了放在f.close的末尾,并且在“for”循环中假定了.readline。这些已经被纠正了。对代码进行了测试,现在它运行良好。很抱歉在测试之前发布了代码。谢谢,我正在尝试了解如何有效地使用它。但是,唉,我的文件似乎不符合标准XML格式,因为我得到了这个结果,我不得不对文件的某些部分进行审查,但不是很重要的部分:这是文件behore的一个方面,我认为这张图片更容易回答:它还删除了文件中需要的一些数据。很难理解图片中发生了什么变化。你能更好地解释一下错在哪里吗?好吧,原来的四行被合并成一行,几乎所有在原始代码中被涂成黄色的数据都丢失了,只剩下一些数据,比如第6行变成了4.0.0.3行,还有这个“ns0:”添加到所有位置如果不指定名称空间,则默认情况下会添加ns0:,请参见。CDATA不显示,因为ElementTree不支持该功能。您可以找到使ElementTree支持CDATA的方法,请参见
f = open('xmlfile.xml','r')
flag = False
tempData = ''
for line in f:
  if '<object2>' in line:
    flag = True
  elif flag == True and '</object2>' in line:
    flag = False
  elif flag == False:
    tempData += line
f.close()
f = open('xmlfile.xml','w')
f.write(tempData)
f.close()
from xml.etree import ElementTree

with open('file.xml', 'rt') as f:
    tree = ElementTree.parse(f)

root = tree.getroot()
for node in root.iter():
    if node.tag == 'object2':
        root.remove(node)

tree.write(out.xml)