繁体   English   中英

在Python中查找子字符串

[英]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.nameword而不是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM