我有两个列表,如下所示:

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:检查两个列表之间的字符串是否部分匹配相关推荐

  1. python 多个列表合并_Python对两个有序列表进行合并和排序的例子

    Python对两个有序列表进行合并和排序的例子 这篇文章主要介绍了Python对两个有序列表进行合并和排序的例子,最终代码经过不断优化,小编非常满意,需要的朋友可以参考下 假设有2个有序列表l1.l2 ...

  2. python中列表数据类型_Python数据类型之List列表实例详解

    本文实例讲述了Python数据类型之List列表.分享给大家供大家参考,具体如下: list列表 1.概述: 通过之前的学习,我们知道变量可以存储数据,但是一个变量只能存储一个数据,现在有一个班级,班 ...

  3. python三元表达式求值_python 三元表达式的 列表推导式 生成器推导式

    python中三元表达式的语法如下 ===if else result = x if condition else y 另外一种三元表达式,比较少见 result = (x, y)[condition ...

  4. python将多个列表合并_Python中多个列表与字典的合并方法

    Python中多个列表与字典的合并方法 1多列表的合并 1)a+=b a=['','',''] b = ['','',''] a += b print(a) >>>['','','' ...

  5. python中列表下标_Python中如何在列表中找到某个元素的下标

    题目 对于列表 ["foo", "bar", "baz"]和在列表中的元素"bar",如何得到它的下标(1) 回答一 & ...

  6. python字典嵌套字典构造_python实现字典嵌套列表取值

    python实现字典嵌套列表取值 如下所示: dict={'log_id': 5891599090191187877, 'result_num': 1, 'result': [{'probabilit ...

  7. python修改列表元素_python 3 基础之列表和列表添加元素、修改元素、查找元素、删除元素、排序、嵌套、取最值...

    列表(与字符串相似,字符串用引号,而列表用中括号和逗号.引号,列表中可以保存多种数据类型) # 定义一个列表,格式:列表名=[元素1,元素2.元素3.......] 列表使用与字符串的索引编号一致,如 ...

  8. python中列表数据类型_python基础数据类型一(列表)

    列表 列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. 比如JS中的数 组, java中的数组等等. 它是以[ ]括起来, 每个元素用' , '隔开而且可以存放各种数据类型: ...

  9. 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  ...

  10. python两个excel字段模糊匹配_Python对两个Excel操作

    简介 现在有个需求,我们根据需要 data.xlsx 中某些单元格的内容来查找 find.xlsx 中的某些內容. 数据内容(为了数据安全,所有数据均已模糊处理) data.xlsx内容: find. ...

最新文章

  1. python3 zipfile_python3中zipfile模块的常用方法
  2. svpwm矢量控制电机相电压波形_【顺藤摸瓜】永磁同步为什么要用SVPWM控制
  3. Android NDK工程创建与编译运行
  4. jsp学习之路之安装Apache Tomcat7.0服务器
  5. 【推荐】 女人愁嫁时代终于来临
  6. 这个世界上不存在什么弯道超车,只存在正道超车
  7. 天龙源码框架分析_天龙源码分析 - 客户端登录流程
  8. LinuxCNC的能做什么
  9. c语言函数求圆面积,C语言编写函数,计算圆面积.
  10. 深度学习与神经网络的关系
  11. php截取部分pdf,如何将一个pdf文档拆分成多个
  12. 贼法,要想打好打高,几条建议
  13. 设计师Adobe国际认证证书有用吗?
  14. MacM1 AndroidStudio 自带模拟器安装不上apk
  15. FlushMouseMsgBuffer
  16. 电脑桌面只有计算机回收站显示,电脑桌面上只有回收站怎么办 电脑只显示回收站的两种解决方法...
  17. Struts2 官方教程之Struts Tags(六)——Generic Tags(Control Tags )
  18. 程序员如何高效提问?
  19. MAC使用github客户端出现的问题及解决方法
  20. VCIP2020:相同主观质量下基于学习的UGC短视频低码率编码

热门文章

  1. WinCE6.0下TCPMP的BenchMark汇总
  2. Ext 2.0布局实例
  3. Elasticsearch 之索引创建原则
  4. C语言数字转换为字符的问题
  5. 阿里云如何打破Oracle迁移上云的壁垒
  6. CF 235C. Cyclical Quest [后缀自动机]
  7. PHP下ajax跨域的解决方案之window.name
  8. GitHub使用笔记
  9. java代码获取系统时间相差8小时
  10. java-类库-Apache Commons