研究的主题取自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
捕获biopsy
和list_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/