python两个列表匹配_Python:检查两个列表之间的字符串是否部分匹配
我有两个列表,如下所示:
c = ['John', 'query 989877 forcast', 'Tamm']
isl = ['My name is Anne Query 989877', 'John', 'Tamm Ju']
我想检查isl中的每个项目以及c中的每个项目,以便获得所有的部分字符串匹配项.
我需要的输出将如下所示:
out = ["john", "query 989877", "tamm"]
可以看出,我也得到了部分字符串匹配.
我尝试了以下方法:
out = []
for word in c:
for w in isl:
if word.lower() in w.lower():
out.append(word)
但这只会给我输出为
out = ["John", "Tamm"]
我也尝试了以下方法:
print [word for word in c if word.lower() in (e.lower() for e in isl)]
但这仅输出“ John”.
我如何得到想要的东西?
解决方法:
也许是这样的:
def get_sub_strings(s):
words = s.split()
for i in xrange(1, len(words)+1): #reverse the order here
for n in xrange(0, len(words)+1-i):
yield ' '.join(words[n:n+i])
...
>>> out = []
>>> for word in c:
for sub in get_sub_strings(word.lower()):
for s in isl:
if sub in s.lower():
out.append(sub)
...
>>> out
['john', 'query', '989877', 'query 989877', 'tamm']
如果只想存储最大的匹配项,则需要以相反的顺序生成子字符串,并在isl中找到匹配项后立即中断:
def get_sub_strings(s):
words = s.split()
for i in xrange(len(words)+1, 0, -1):
for n in xrange(0, len(words)+1-i):
yield ' '.join(words[n:n+i])
out = []
for word in c:
for sub in get_sub_strings(word.lower()):
if any(sub in s.lower() for s in isl):
out.append(sub)
break
print out
#['john', 'query 989877', 'tamm']
标签:list,string,python
python两个列表匹配_Python:检查两个列表之间的字符串是否部分匹配相关推荐
- python 多个列表合并_Python对两个有序列表进行合并和排序的例子
Python对两个有序列表进行合并和排序的例子 这篇文章主要介绍了Python对两个有序列表进行合并和排序的例子,最终代码经过不断优化,小编非常满意,需要的朋友可以参考下 假设有2个有序列表l1.l2 ...
- python中列表数据类型_Python数据类型之List列表实例详解
本文实例讲述了Python数据类型之List列表.分享给大家供大家参考,具体如下: list列表 1.概述: 通过之前的学习,我们知道变量可以存储数据,但是一个变量只能存储一个数据,现在有一个班级,班 ...
- python三元表达式求值_python 三元表达式的 列表推导式 生成器推导式
python中三元表达式的语法如下 ===if else result = x if condition else y 另外一种三元表达式,比较少见 result = (x, y)[condition ...
- python将多个列表合并_Python中多个列表与字典的合并方法
Python中多个列表与字典的合并方法 1多列表的合并 1)a+=b a=['','',''] b = ['','',''] a += b print(a) >>>['','','' ...
- python中列表下标_Python中如何在列表中找到某个元素的下标
题目 对于列表 ["foo", "bar", "baz"]和在列表中的元素"bar",如何得到它的下标(1) 回答一 & ...
- python字典嵌套字典构造_python实现字典嵌套列表取值
python实现字典嵌套列表取值 如下所示: dict={'log_id': 5891599090191187877, 'result_num': 1, 'result': [{'probabilit ...
- python修改列表元素_python 3 基础之列表和列表添加元素、修改元素、查找元素、删除元素、排序、嵌套、取最值...
列表(与字符串相似,字符串用引号,而列表用中括号和逗号.引号,列表中可以保存多种数据类型) # 定义一个列表,格式:列表名=[元素1,元素2.元素3.......] 列表使用与字符串的索引编号一致,如 ...
- python中列表数据类型_python基础数据类型一(列表)
列表 列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. 比如JS中的数 组, java中的数组等等. 它是以[ ]括起来, 每个元素用' , '隔开而且可以存放各种数据类型: ...
- python多维字符数组_python多维数组内找指定字符串
li=[['a','b',['t', 'c'],'d'],['e','f','g','h']] def a(l, c, ar = []): t = 0 arr = [] for i in l: if ...
- python两个excel字段模糊匹配_Python对两个Excel操作
简介 现在有个需求,我们根据需要 data.xlsx 中某些单元格的内容来查找 find.xlsx 中的某些內容. 数据内容(为了数据安全,所有数据均已模糊处理) data.xlsx内容: find. ...
最新文章
- python3 zipfile_python3中zipfile模块的常用方法
- svpwm矢量控制电机相电压波形_【顺藤摸瓜】永磁同步为什么要用SVPWM控制
- Android NDK工程创建与编译运行
- jsp学习之路之安装Apache Tomcat7.0服务器
- 【推荐】 女人愁嫁时代终于来临
- 这个世界上不存在什么弯道超车,只存在正道超车
- 天龙源码框架分析_天龙源码分析 - 客户端登录流程
- LinuxCNC的能做什么
- c语言函数求圆面积,C语言编写函数,计算圆面积.
- 深度学习与神经网络的关系
- php截取部分pdf,如何将一个pdf文档拆分成多个
- 贼法,要想打好打高,几条建议
- 设计师Adobe国际认证证书有用吗?
- MacM1 AndroidStudio 自带模拟器安装不上apk
- FlushMouseMsgBuffer
- 电脑桌面只有计算机回收站显示,电脑桌面上只有回收站怎么办 电脑只显示回收站的两种解决方法...
- Struts2 官方教程之Struts Tags(六)——Generic Tags(Control Tags )
- 程序员如何高效提问?
- MAC使用github客户端出现的问题及解决方法
- VCIP2020:相同主观质量下基于学习的UGC短视频低码率编码