python - 选择至少包含一个字符串的字符串作为子字符串
问题描述
我有一个术语列表:
terms = [
'mani factor',
'manner',
'manufactur',
'manufactur distribut',
'manufactur facil',
'manufactur oper',
'manufactur process',
'march',
'margin',
'market advers',
'market condit',
'market disrupt',
'market price',
'market product',
'market result',
'market risk',
'market sale',
'market share',
'market valu',
'materi advers',
'materi advers affect',
'materi advers effect',
'materi advers impact',
'materi affect',
'materi impact'
]
和另一组术语 b:
b = set(['risk','factor','effect','affect','impact'])
我想找到至少包含 b 中的一个术语的术语。我尝试了以下方法:
for t in b:
for term in terms:
if t in term:
a.extend(term)
它导致此输出:
'a', 'n', 'i', ' ', 'f', 'a', 'c', 't', 'o', 'r', 'e', 'c', 'o', 'n', 'o', 'm', ' ', 'f', 'a', 'c', 't', 'o', 'r', 'f', 'a', 'c', 't', 'o', 'r', ' ', 'a', 'f', 'f', 'e', 'c', 't', 'f', 'a', 'c', 't', 'o', 'r', ' ', 'c', 'a', 'u', 's', 'f', 'a', 'c', 't', 'o', 'r', ' ', 'c', 'o', 'n', 't', 'r', 'o
解决方案
使用append
而不是extend
——谷歌区别:-)
一个不错的 Pythonic 解决方案是这种带有条件的双重列表理解:
[t for w in b for t in terms if w in t]
输出:
[
'materi advers effect',
'mani factor',
'materi advers impact',
'materi impact',
'materi advers affect',
'materi affect',
'market risk'
]
这能让你得到你所追求的吗?
推荐阅读
- outlook-web-addins - 使用 multipart/Form-data 进行休息 POST 查询
- android - 如何在android studio中使用相对布局时使(按钮)屏幕响应?
- node.js - 无法使用 Angular HttpClient 编辑设置 Post 请求正文我无法进行(放置、删除、发布任何请求,只有得到工作)
- android-studio - 更改后出现的 Gradle 和错误
- python - 将字典键拆分为字符串类型元组并将另一个字符串附加到元组中的最后一项的最快方法是什么?
- highcharts - 使用 Highcharts 创建具有分组类别的热图
- batch-file - Windows 批处理脚本必须接受具有特定扩展名的输入文件
- javascript - 使用 Javascript 在 Laravel 刀片视图中显示数组中的动态数据时出现问题
- javascript - javascript弱映射保持对已删除对象的引用
- java - 如何使用串行连接连接两个系统(thrift 服务器和客户端)?