小编sti*_*o68的帖子

提取文件名

我正在编写一个脚本,它从目录中获取一个文件列表,打开每个文件,然后搜索包含扩展名为.zip的文件名的行.然后我想从行中删除文件名.这是我的代码:

foreach (@fnames) {
    chomp ($_);
    open FILE, '<', "$_";
    @archives = grep { /.+?\.zip/ } <FILE>;

    foreach (@archives) {
        if ($_ =~ /("|>)(.+?)("|<)/) { push @files, $2; }
    }
}
Run Code Online (Sandbox Code Playgroud)

我从中提取数据的文件将包含双引号或尖括号之间的.zip文件名.此代码没有返回任何内容,但我知道文件名存在.如果我在终端上做grep我可以看到所有这些,但是Perl中的grep并没有给我任何东西.有任何想法吗?

regex perl

3
推荐指数
1
解决办法
95
查看次数

从XML中删除父元素和所有子元素

给定具有以下结构的XML文件:

<Root>
    <Stuff></Stuff>
    <MoreStuff></MoreStuff>
    <Targets>
        <Target>
            <ID>12345</ID>
            <Type>Ground</Type>
            <Size>Large</Size>
        </Target>
        <Target>
            ...
        </Target>
    </Targets>
</Root>
Run Code Online (Sandbox Code Playgroud)

我正在尝试遍历<Targets>元素下的每个子节点,检查每个子节点的<ID>特定值,如果找到该值,那么我想删除整个<Target>条目.我一直在使用ElementTree Python库,但收效甚微.这是我到目前为止所拥有的:

import xml.etree.ElementTree as ET

tree = ET.parse('file.xml')
root = tree.getroot()

iterator = root.getiterator('Target')

for item in iterator:
    old = item.find('ID')
    text = old.text
    if '12345' in text:
        item.remove(old)

tree.write('out.xml')
Run Code Online (Sandbox Code Playgroud)

我使用这种方法的问题是只<ID>删除了子元素,但是我需要移除整个<Target>元素及其所有子元素.谁能帮忙!谢谢.

python xml elementtree python-2.7

2
推荐指数
1
解决办法
2228
查看次数

标签 统计

elementtree ×1

perl ×1

python ×1

python-2.7 ×1

regex ×1

xml ×1