通过find方法查找完全匹配

时间:2013-12-27 17:17:04

标签: python python-2.7

在这段代码中,我解压缩一个文件来搜索一个名为node.txt的特定文件,但是如果我有更多名为node.txt.old或node.txt.new的文件,它会显示在搜索上。

因此,简而言之,我怎样才能将loop_package.find("node.txt")限制为仅匹配确切的文件?

import zipfile
import re

ziproot = zipfile.ZipFile('c:\\zips\somezip.zip')
node_list = []
for loop_package in ziproot.namelist():
    if loop_package.find("node.txt"):
        for line in ziproot.read(loop_package).split("\n"):
            if line.find("doc-node") >= 0:
                node_dict = dict()
                for iline in ziproot.read(loop_package).split("\n"):
                    if iline.find("node_nsName") >= 0:
                        mt = re.search(r'(.*>)(.*?)(<.*)', iline, re.M | re.I)
                        node_dict['filePath'] = loop_package
                        node_dict['nodeCon'] = mt.group(2)
                        node_list.append(node_dict)
                    else:
                        pass
            else:
                pass
    else:
        pass

提前致谢。

2 个答案:

答案 0 :(得分:3)

使用endswith代替find

for loop_package in ziproot.namelist():
    if loop_package.endswith("node.txt"):

由于loop_package是一个完整的文件路径,我们感兴趣的是这样一个字符串的结尾,即文件名。

答案 1 :(得分:0)

您正在搜索字符串列表中的字符串。 Python使这很容易!

您不想使用find()方法。您想要搜索ziproot.namelist():

if "node.txt" in ziproot.namelist():