Python -迭代一个项目文件,然后Split('_)->现在将名称分组并获得总计数

brccelvz  于 2023-03-24  发布在  Python
关注(0)|答案(2)|浏览(122)

一个文件有50个命名约定的文件,在这里我可以分割'_',并从分割中获取[3]元素,以从文件中获取产品的名称。
我导入了文件路径,并将文件保存在一个变量中&将每个元素[3]拆分为一个变量
=〉现在,我无法通过名称(Books,Papers,Pencils...)获得所有元素[3]的计数,并获得出现次数:
[输出]苹果4橙子9香蕉2.....
到目前为止,我得到了分裂的项目和打印列表了;但需要将它们分组并获得每组的计数。
就我所知

import os
# local path to files.
path_in = '/Users/username/Downloads/my_list' 
for file in os.listdir(path_in):
        # split produce item by name via '_' delimiter.
        split_file = file.lower().split('_') # 3rd Element only since produce.
b91juud3

b91juud31#

添加了produce_count来跟踪每个产品名称在第三个位置出现的次数。对于每个文件,它确保拆分列表中有足够的部分以避免错误。如果一切正常,它会为该特定产品的计数加1。

import os
from collections import defaultdict

# local path to files.
path_in = '/Users/username/Downloads/my_list' 

# Initialize the dictionary for counting occurrences
produce_count = defaultdict(int)

for file in os.listdir(path_in):
    # split produce item by name via '_' delimiter.
    split_file = file.lower().split('_') # 3rd Element only since produce.
    
    # Check if there are enough elements to avoid IndexError
    if len(split_file) > 2:
        produce_name = split_file[2]
        produce_count[produce_name] += 1

# Print the results
for produce, count in produce_count.items():
    print(f'{produce} {count}')

假设您的目录中有以下文件:

user_01_apple_001.txt
user_02_orange_002.txt
user_03_apple_003.txt
user_04_banana_004.txt
user_05_apple_005.txt
user_06_apple_006.txt
user_07_orange_007.txt
user_08_orange_008.txt
user_09_banana_009.txt
user_10_orange_010.txt

输出:

apple 4
orange 4
banana 2
5kgi1eie

5kgi1eie2#

您可以使用默认值来统计字典。

import os
from collections import defaultdict

# local path to files.
path_in = '/Users/username/Downloads/my_list' 
counter = defaultdict(lambda *args: 0)
for file in os.listdir(path_in):
        # split produce item by name via '_' delimiter.
        split_file = file.lower().split('_') # 3rd Element only since produce.
        counter[split_file] += 1

所有类型的produce都将出现在counter的键中,以及它们在values()中出现的次数

相关问题