python函数str.find()是否返回字符串而不是索引num

时间:2016-01-25 09:12:29

标签: python python-3.x

a = 'hello world'
a.find('wor')
# result: 5 

是索引5.

这不是我想要的。我想返回在索引5上找到的特定子字符串。

在Python中如何在字符串中搜索/查找子字符串,如果找不到索引号,则返回该子字符串。

有出路.....

3 个答案:

答案 0 :(得分:2)

请注意,Python中的字符串是不可变的,因此如果您以某种方式从源字符串中提取子字符串,则必须通过复制源字符串中的字符来创建新字符串。它与其他语言不同,您只需将引用返回到源字符串即可。

要做你想做的事,我只需使用in运营商。例如:

a = 'hello world'
data = ('wor', 'WOR', 'hell', 'help')

for s in data:
    print(s, s if s in a else None)

<强>输出

wor wor
WOR None
hell hell                                                                                                                                      
help None                                                                                                                                      

或者如果你更喜欢一个功能:

def found(src, substring):
    return substring if substring in src else None

for s in data:
    print(s, found(a, s))

如果你不熟悉Python的yes_value if some_condition else no_value语法(也就是条件表达式),那么这个函数使用更多传统的&#34重写了; if ... else阻止:

def found(src, substring):
    if substring in src:
        return substring
    else:
        return None

答案 1 :(得分:1)

您可以这样做:

myString = "hello world"
found = a.find('wor')
a = a[found: found+3]

当然只是一个简单的例子,但应该给你一个想法,它使用python list切片功能,你可以更进一步:

def find_substring(string, substring):
    pos = string.find(substring)
    return string[pos: pos + len(substring)]

答案 2 :(得分:0)

这符合您的要求:

>>> import re
>>> (re.search('wor','Hello world')).group(0)
'wor'
>>>

(阅读re.search org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectForm cannot be cast to org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectImage 了解更多信息)