在python中确定两个字符串的接近距离

2024-09-29 17:09:46 发布

您现在位置:Python中文网/ 问答频道 /正文

Clean\u数据是一个包含9000多个文本文件的列表。规则是包含超过500个元素的字典列表。下面是规则列表

rules = [{'id': 1, 'kwd_root': 'add', 'kwd_sub': 'price target', 'word_count': 5, 'occurance': 1, 'kwd_search': 1, 'status': 1}, {'id': 2, 'kwd_root': 'add', 'kwd_sub': 'PT', 'word_count': 5, 'occurance': 1, 'kwd_search': 1, 'status': 1},.....]

我的问题是:我需要为干净的数据中的每个元素应用规则下表是我用过的密码

for word in clean_data:
    for i,d in enumerate(rules):
        if  any(d['kwd_root'] in word and d['kwd_sub'] in word):
            if abs(word.index(d['kwd_root']) - word.index(d['kwd_sub'])) <= d['word_count']:
            research.append(word)
        else:
            non_research.append(word)
    else:
            non_research.append(word)

运行完这个代码后,我将len(non\u research)设置为110000,len(research)设置为5500

但len(non\u research)+len(research)的预期输出应该等于len(clean\u data)

谢谢


Tags: 数据inid元素列表len规则count
1条回答
网友
1楼 · 发布于 2024-09-29 17:09:46

代码错误。另一方面,第3行使用需要列表作为参数的'any'。此外,研究/非研究为每个单词和每个条件添加一个值(单词x条件次数)。也许你可以使用:

for word in clean_data:
    flag_rules = False
    for i,d in enumerate(rules):
        if d['kwd_root'] in word and d['kwd_sub'] in word:
            if abs(word.index(d['kwd_root']) - word.index(d['kwd_sub'])) <= d['word_count']:
                flag_rules = True
    if flag_rules:
        research.append(word) 
    else:
        non_research.append(word)

相关问题 更多 >

    热门问题