如何打开 txt 文件列表,将它们转换为字符串,然后查看它们是否与给定字典中的任何键匹配

How do I open a list of txt files, convert them to strings, and then see if they match any keys from a given dictionary

我有一个文本文件列表 (list_4),格式为 cv1.txt、cv2.txt、cv3.txt 等,最大为 cv20.txt。我想使用 for 循环分别打开和读取这些文件并将它们转换为字符串。这是我的代码:

list_5 = []
for i in list_4:
    file = open(i)
    line = file.read().replace('\n', '')
    list_5.append(line)
    file.close()
print(list_5)

这部分代码用于打开、读取我的 list_4 个 txt 文件并将其转换为字符串。

现在我有一个名为 my_dict 的字典,格式为 {'abandoned':-1, "abandonment':1, 'abandon':0 ......}

我想用for循环来比较之前从list_5生成的字符串元素和my_dict的键值对,为list_4的每个字符串元素输出一系列整数=].

例如:

for key in my_dict:
    for i in list_4:
        file = open(i, 'r')
        line = file.read()
        file.close()
        if key in line:
            list_6.append(my_dict[key])
print(list_6)

但是问题是这个 for 循环的输出是一系列混乱的键和文件:

['-1cv1.txt', '-1cv8.txt', '-1cv17.txt', '1cv4.txt', '1cv6.txt', '1cv1.txt', ...]

获得使用:

for key in my_dict:
    for i in list_4:
        file = open(i, 'r')
        line = file.read()
        file.close()
        if key in line:
            list_6.append(str(my_dict[key]) + i)
print(list_6)

我有什么方法可以获取 list_5 中每个字符串元素的特定键,即

list_5: ['the cow goes moo', 'the cat goes meow',...] list_6: [[0,1,-1],[0,0,0],...]

可能需要在列表中使用列表?不确定,如有任何帮助,我们将不胜感激!

如果我对问题的理解正确,您希望最终输出看起来像这样:

[ ( 'the cow goes moo', [0, 1, -1] ), ( 'the cat goes meow', [0, 0, 0]),... ]

如果是这样,也许试试:

for line in list_5: # using list_5 instead of list_4
    sub_list = []
    for key in my_dict:
        if key in line:
            sub_list.append(my_dict[key])
    list_6.append(sub_list)
combined = list( zip( list_5, list_6 ))
print( combined )

(如果所有 line 项确实由空格分隔,则可以通过拆分每个 line 并迭代它而不是字典键来加速脚本,但现在忽略它。 ..) 希望这会有所帮助。