【问题标题】:How do I refer to a specific variable list item in python?如何在 python 中引用特定的变量列表项?
【发布时间】:2019-03-14 18:08:01
【问题描述】:

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

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.

^重复了很多次

【问题讨论】:

  • 您想对text1.txt 和其他.txt 文件执行什么类型的功能?你想把它当作一个文件来处理,并可能读写text1.txt,并且需要一种方法来为它分配一个文件句柄吗?
  • @davedwards e x a c t l y。你成功了
  • 如果regex 不是必需的,请考虑删除该标签
  • 输出重复“很多次”,因为嵌套的 for-loops 以字符串的形式迭代 filepath,每个重复文件名中的一个字符,实际上不是 阅读 文件内容,如您所料。相反,删除第二个for-loop。一起试试这个:for file_name in sorted(zip_file.namelist()): with open(file_name, 'r') as f: print(f.read().strip()) 将,例如,printexample.zip 中每个 .txt 文件的内容。

标签: regex python-3.x list


【解决方案1】:

我不会使用正则表达式,而只是一个简单的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 子句。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-09-22
      • 2022-01-25
      • 2017-09-11
      • 2017-04-25
      • 1970-01-01
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多