[英]Find substring in Python
我发现一个词“植物”的同义词
syn = wordnet.synsets('plant')[0].lemmas()
>>>[Lemma('plant.n.01.plant'), Lemma('plant.n.01.works'), Lemma('plant.n.01.industrial_plant')]
和一个输入词
word = 'work'
我想查找“工作”是否出现在syn中。 怎么做?
你可以很容易地检查使用关键字的子存在in
在python:
>>> word = "work"
>>> word in 'plant.n.01.works'
True
>>> word in 'plant.n.01.industrial_plant'
False
如果要在列表中对此进行测试,可以执行循环:
syn = ["plant.one","plant.two"]
for plant in syn:
if word in plant:
print("ok")
或更好的列表理解:
result = [word in plant for plant in syn]
# To get the number of matches, you can sum the resulting list:
sum(result)
编辑 :如果要查找的单词很长,则可以嵌套两个循环:
words_to_search = ["work","spam","foo"]
syn = ["plant.one","plant.two"]
for word in words_to_search_for:
if sum([word in plant for plant in syn]):
print("{} is present in syn".format(word))
请注意,您在操纵引理对象而不是字符串。 如果对象未实现[__contains__](https://docs.python.org/2/library/operator.html#operator.__contains__)
方法,则可能需要检查word in plant.name
的word
而不是word
。 我对这个图书馆不熟悉。
Lemma
有一个name()
方法,所以您可以做的是
>>> 'works' in map(lambda x: x.name(), syn)
True
编辑:没有看到您说的“工作”,没有工作,所以这将是:
>>> for i in syn:
... if 'work' in i.name():
... print True
...
True
例如,您可以将其包装在一个函数中。
或我提出的两个建议的混合:
any(map(lambda x: 'work' in x, map(lambda x: x.name(), syn)))
str1 = "this is a example , xxx"
str2 = "example"
target_len = len(str2)
str_start_position = str1.index(str2) #or str1.find(str2)
str_end_position = str_start_position + target_len
您可以使用str_start_position和str_end_position来获取目标子字符串
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.