Как проверить, имеет ли список строк то же имя? - PullRequest
0 голосов
/ 11 мая 2019

Я хочу разделить несколько строк на несколько меток. Например, если в строке есть слово «Cat», я дам ей метку номер 1. Другой пример, если у меня есть строка «Dog», я дам ей метку 2 и т. Д.

Я попытался сравнить строки, но это дало ошибку.

Я использовал import os, но до сих пор не знаю, как добавить к нему метку.

import os
path = "check"
dirList = os.listdir(path)


with open("check.txt", "w") as a:
    for path, subdirs, files in os.walk(path):
        for filename in files:
            #print(i)
            mylist = filename.split("_")

            #for mlist in mylist:

Ожидаемый результат:

Cat_0 0
Cat_1 0
Cat_2 0
Cat_3 0
Dog_0 0
Dog_1 0
Dog_2 0
Dog_3 0

1 Ответ

0 голосов
/ 12 мая 2019

Я бы решил эту проблему, создав словарь имен меток, соответствующих значениям их меток.

labels = {
    'Cat': 0,
    'Dog': 1,
    //etc
}

Затем, когда вы просматриваете каждый файл в вашем каталоге, для каждого файла подумайте, содержит ли имя файла имя метки. Если это так, присвойте ему значение метки. Вы также можете извлечь эту логику в ее собственную функцию, чтобы она была понятнее.

def find_label(labels, to_label): #'labels' is your dictionary of labels, to_label is the string you want to label.
    for key in labels.keys():
        if key in to_label:
            return labels[key]
    return -1 #If you've made it here, none of your labels apply

Получив эту функцию, вы просто вызываете ее и используете результаты каждый раз, когда у вас появляется новый файл, который вы хотите пометить.

for filename in files:
    label = find_labels(label, filename)
    #Write your label to a file or whatever you want to do with it.

Если у вас слишком много ярлыков, из-за которых буквально возникает словарь, создайте словарь с помощью python.

label_names = [] #A list of all your label names that you've read into a list
labels = {}
count = 0
for name in label_names:
    labels[name] = count
    count+=1

Теперь в вашем словаре меток есть все ваши метки с уникальными значениями меток, которые считаются с 0.

...