研究的主题取自Text processing and detection from a specific dictionary in python主题。也许我误解了OP的问题,但是我试图改进代码。因此,也许我的问题可能有所不同。在解释我要做什么之前,让我与您分享代码:

dict_1={"Liquid Biopsy":"Blood for analysis","cfDNA":"Blood for analysis"}
list_1=[u'Liquid', u'biopsy',u'based', u'on', u'circulating', u'cell-free', u'DNA', u'(cfDNA)', u'analysis', u'are', u'described', u'as', u'surrogate', u'samples', u'for', u'molecular', u'analysis.']
for i in dict_1:
    if i.lower() in " ".join(list_1).lower():
        print("Key: {}\nValue: {}\n".format(i,dict_1[i]))


这些代码可以从以list_1编写的纯文本中捕获字典键。但是,当我研究此代码时,我想知道如果某些字典键在list_1中重复出现会怎样。然后我在此list_1中两次编写了相同的键。并且上面的代码无法识别重复的代码,该程序给出了与下面相同的结果。

Key: cfDNA
Value: Blood for analysis

Key: Liquid Biopsy
Value: Blood for analysis


Process finished with exit code 0


然后我尝试更改我的方法并编写了下面给出的不同代码:

dict_1={"Liquid Biopsy":"Blood for analysis","cfDNA":"Blood for analysis"}
list_1=[u'Liquid', u'biopsy',u'based', u'on', u'circulating', u'cell-free', "cfdna",u'DNA', u'(cfDNA)', u'analysis', u'are', u'described', u'as', u'surrogate', u'samples', u'for', u'molecular', u'analysis.']
for i in list_1:
    for j in dict_1:
        for k in j.split():
            count=0
            if k.lower() in i.lower():
                count+=1
                print("Key: {}\nValue: {}\nCount: {}\nDescription: Came from '{}'\n".format(j, dict_1[j],str(count),i))


但是很明显,最后的代码会产生不希望的结果。如下所示,该程序从liquid捕获biopsylist_1单词。 cfDNA是在list_1中第二次写入的,因此该程序捕获了两次。但是是否可以一次写入结果但总结捕获时间呢?

Key: Liquid Biopsy
Value: Blood for analysis
Count: 1
Description: Came from 'Liquid'

Key: Liquid Biopsy
Value: Blood for analysis
Count: 1
Description: Came from 'biopsy'

Key: cfDNA
Value: Blood for analysis
Count: 1
Description: Came from 'cfdna'

Key: cfDNA
Value: Blood for analysis
Count: 1
Description: Came from '(cfDNA)'


Process finished with exit code 0


我希望你了解我想做的事。我想抓住所有写在文本中的键。而且我也想计算多少次,这些键在文本中重复。

最佳答案

如果我正确理解,您想查找“关键字”在文本中出现的次数。您可以为此使用“重新”模块。

import re

dict_1={"Liquid Biopsy":"Blood for analysis","cfDNA":"Blood for analysis", "asfdafaf":"dunno"}
list_1=[u'Liquid', u'biopsy',u'based', u'on', u'circulating', u'cell-free', "cfdna",u'DNA', u'(cfDNA)', u'analysis', u'are', u'described', u'as', u'surrogate', u'samples', u'for', u'molecular', u'analysis.']

text = ' '.join(list_1).lower()

for key in dict_1:
    n = len(re.findall(key.lower(), text))
    if n > 0:
        print('Key:', key)
        print('Value:', dict_1[key])
        print('n:', n)
        print()

关于python - 如何从纯文本中获取字典键?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44060080/

10-12 14:20