python - 使用查找比较数据并使用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
在这里,我编写了代码以从用户输入数据中提取术语。但它同时提取了“过敏”和“皮肤过敏”,而我这里只需要“皮肤过敏”。请帮我...
解决方案
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)
推荐阅读
- sharepoint - 为多个输入查询 SharePoint 列表时出现 CAML 错误
- docker - 容器如何连接到 docker 主机上的服务?
- java - android如何实现后台tcp alerts的app
- java - 继承会改变使用 Unsafe 类获得的字段的偏移量吗?还是取决于具体的虚拟机实现?
- javascript - Vue getter/setter在输入小数时发出数字变成无限循环
- mysql - mysql case语句中断
- javascript - 无法通过回调设置玩家 ID 和用户名
- java - Spring-MVC:JSP
- javascript - ReactQuill - 如何设置占位符属性的样式?
- javascript - 写这个的最好方法是什么: