如何在python中引用特定的变量列表项?

时间:2019-03-14 18:08:01

标签: regex python-3.x list

我的代码获取信息并将其存储在列表中。排序后的列表是:

example/
example/text1.txt
example/text2.txt
example/text3.txt

我想引用text1.txt并对其执行一个功能,然后转到列表中的下一个条目(在本例中为text2.txt)。

我能够看到我用正则表达式可以做的一些事情,但是它什么也没输出。 到目前为止,这是我的一部分代码:

FileNames = name in sorted(zip_file.namelist())
regex = r"[1-9]+ \d"
matches = re.findall(regex, str(FileNames))

for match in matches:
    print("%s" % (match))

编辑: 利用另一种技术,这是到目前为止我得到的:

import zipfile
import re
zip_file = zipfile.ZipFile('/example.zip','r')
#zip_file = zipfile.ZipFIle(input("What's the filepath?: "))
for name in sorted(zip_file.namelist()):
#print(name) 
for file_path in name:
    file_name = file_path.split("/")[-1]
    if "1" in file_name:
        print(file_name)
    else:
        print("This line does not contain a valid path to a text file.")
zip_file.close()

它给了我非常可观的总产出,

example/text1.txt
The Line does not contain a valid path to a text file.

^重复了很多次

2 个答案:

答案 0 :(得分:0)

由于您要处理路径,因此我不会使用正则表达式,而只会使用简单的split。对于每一行,您都可以在"/"之后使用列表的最右边的字符串(如果存在)。如果包含".txt"是您的文件名,否则忽略该行。

files_paths = ["example/",
               "example/text1.txt",
               "example/text2.txt",
               "example/text3.txt"]

for file_path in files_paths :
    file_name = file_path.split("/")[-1]
    if ".txt" in file_name:
        ... # call a function with file_name as an argument.
    else:
        print("This line does not contain a valid path to a text file.")

print就在这里进行测试,如果希望脚本保持沉默,请随时删除else子句。

答案 1 :(得分:0)

假设列表中的每个条目都是您要对其执行某些操作的文件的路径,则可以使用os.path库获取文件路径的基本名称。

import os
path_str = "example/text1.txt"
file_name = os.path.basename(os.path.normpath(path_str))