在字典中加载 .csv 文件并使用 Python 在列中搜索特定条目

Load a .csv-file in a dictionary and search for a specific entry in column using Python

(Python 3) 我目前正在解决正确读取给定 .csv 文件并将数据加载到字典中的问题。由于我是新手,所以我无法找出将 .csv 数据保存在名为“loaded_csv_data”(1 Challenge) 的字典中的正确语法。我的总体目标是在“当前文件名”(2 Challenge) 列中搜索特定字符串,如果它存在 return "True" (3挑战).

Path Current Filename File Type Set Date
C:\Users\Dreampeace 2021-10-06_15-10-24 .png 2021-10-06
C:\Users\Dreampeace 2021-10-03_10-10-19 .mov 2021-10-03
C:\Users\Dreampeace 2021-10-01_09-05-55 .jpg 2021-10-01

原始数据

Path;Current Filename;File Type;Set Date
C:\Users\Dreampeace;2021-10-06_15-10-24;.png;2021-10-06
C:\Users\Dreampeace;2021-10-03_10-10-19;.mov;2021-10-03
C:\Users\Dreampeace;2021-10-01_09-05-55,.jpg;2021-10-01

代码

csv_file_handle_r = open(os.path.join(Directory_History_csv, "history-test.csv"), mode = "r", encoding="utf8")
csv_reader = csv.DictReader(csv_file_handle_r, delimiter = ";")

loaded_csv_data = {}
for row in csv_reader:
    print(row)

该代码对我有用,但我最终在控制台上打印了三个不同的词典。

{'Path': 'C:\Users\Dreampeace', 'Current Filename': '2021-10-06_15-10-24', 'File Type': '.png', 'Set Date': '2021-10-06'}
{'Path': 'C:\Users\Dreampeace', 'Current Filename': '2021-10-03_10-10-19', 'File Type': '.mov', 'Set Date': '2021-10-03'}
{'Path': 'C:\Users\Dreampeace', 'Current Filename': '2021-10-01_09-05-55', 'File Type': '.jpg', 'Set Date': '2021-10-01'}

感谢您的每一个回答、建议和帮助。 谢谢!

你的问题中没有包含所需的 form/structure 数据,所以我将尽力猜测。

挑战 1

csv.DictReader 返回一个字典,其中检测到的 headers 作为键,;-sv 作为值。

我用collections.defaultdict方便把所有东西都放在一个大字典里给你用。

import csv
from collections import defaultdict

loaded = defaultdict(list)

with open("t.csv") as in_file:
    csv_reader = csv.DictReader(in_file, delimiter=";")
    for row in csv_reader:
        for key, value in row.items():
            loaded[key].append(value)

print(loaded)
{
  'Path': [
    'C:\Users\Dreampeace', 'C:\Users\Dreampeace', 'C:\Users\Dreampeace'], 
    'Current Filename': ['2021-10-06_15-10-24', '2021-10-03_10-10-19', '2021-10-01_09-05-55'], 
    'File Type': ['.png', '.mov', '.jpg'], 
    'Set Date': ['2021-10-06', '2021-10-03', '2021-10-01'
  ]
}

挑战 2 和 3

从这里开始,您可以通过访问字典中的 'Current Filename' 键来获取文件名列表,并对特定字符串进行线性搜索。