首页 > 解决方案 > 使用查找比较数据并使用python仅输出数据中最长的短语?

问题描述

我有一个 csv,其中包含“KKR”映射到“MBI”数据。我想从用户给定的数据中进行查找,以从 KKR 中提取最长匹配的短语(如果它包含长短语的单词,则忽略小短语)

#os.chdir("kkr_lookup")
data = pd.read_csv("KKR_MBI_MAP.csv")

dfData = pd.DataFrame(data)

dfVerbatim = pd.DataFrame()

dataVerbatim = {'verbatim': ['She experienced skin allergy and hair loss after using it for 2-3 weeks']}
dfVerbatim = pd.DataFrame(dataVerbatim, columns = ['verbatim'])


for index, frame in dfData.iterrows():
    if pd.notnull(frame['KKR']) & dfVerbatim['verbatim'].str.contains(frame['KKR'], case=False).bool() :
        k=(frame['MBI']).lower()
        l=(frame['KKR']).lower()
        print("MBI:",l)
        #print("MBI:",k)

代码给出的输出为:

allergy
hair loss
skin allergy

但我需要:

skin allergy
hair loss

在这里,我编写了代码以从用户输入数据中提取术语。但它同时提取了“过敏”和“皮肤过敏”,而我这里只需要“皮肤过敏”。请帮我...

标签: pythonpattern-matchinglookupstring-matching

解决方案


import re

list_of_strings=["skin allergy","hair loss","allergy","hair", "skin"]
sentence="She experienced skin allergy and hair loss after using it for 2-3 weeks"
pattern = re.compile(r"(\b" + "|".join(list_of_strings) + r")\b")

m = pattern.findall(sentence)
print(m)

推荐阅读