gpt4 book ai didi

python - 迭代 CSV 文件以匹配另一个列表中的项目

转载 作者:行者123 更新时间:2023-11-28 18:58:38 25 4
gpt4 key购买 nike

我正在尝试自动归档一些扫描文档。这些由需要与作业名称匹配的对象编号标识。

我有一个文件夹中提取的文件名列表和一个包含大约 50,000 条对象编号和作业编号记录的 CSV 文件。
我可以使用 == obj_num[0] 等正确匹配所选的工作编号,但我不知道如何遍历列表。

import glob,os,csv

items = glob.glob('*.pdf')
obj_num = [".".join(f.split(".")[:-1]) for f in items if os.path.isfile(f)]

job_id = []


with open('locations.csv', 'r') as csv_file:
csv_reader = csv.DictReader(csv_file)
field_names = ['jobid', 'ItemUniqueId', '###anotherfield', '###anotherfield2']
for row in csv_reader:
if row['ItemUniqueId'] == obj_num:
job_id = row['jobid']
print(job_id)

最佳答案

基本上,您构建了一个查找dict,您可以使用它根据关联的ItemID(来自文件名)直接查找JobID ).因此,您遍历 CSV 文件一次,并构建查找:

lookup = {}
with open('locations.csv', 'r') as csv_file:
csv_reader = csv.DictReader(csv_file)
field_names = ['jobid', 'ItemUniqueId', '###anotherfield', '###anotherfield2']
for row in csv_reader:
lookup[row['ItemUniqueId']] = row['jobid']

然后,对于每个文件名,您使用 ItemID 作为键在查找中搜索 JobID:

job_id = lookup.get(item_id) # returns None if not found
job_id = lookup[item_id] # raises as KeyError if not found

您还可以使用以下方法检查查找中是否存在 ItemID:

if item_id in lookup:
# something something something

另外,您可能想看看 pathlib,它是一个内置模块,为您提供对文件系统的高级访问。如果我没看错你的代码,你就是在尝试从文件名中删除扩展名,Path.stem() 会为你做,例如:

from pathlib import Path

for pdf_file in Path('your path here').glob('*.pdf'):
file_name_wo_suffix = pdf_file.stem
job_id = lookup.get(file_name_wo_suffix)

关于python - 迭代 CSV 文件以匹配另一个列表中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55325697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com