字符串类型是Python里面最常见的类型。在处理字符串的时候经常会用到string模块,string模块的方法是在Python1.6里面添加进来的。本文中主要以string模块的方法来判断一个字符串是否为另一字符串的子串。
(一)首先介绍一种最简单的方法:成员操作 in
ss=raw_input('Enter a short sequence:')
ls=raw_input('Enter a long sequence:')
print ss in ls
如果短字符串ss是长字符串ls的子字符串,则输出True
(二)第二种方法用到string模块的find()方法
import string
ss=raw_input('Enter a short sequence:')
ls=raw_input('Enter a long sequence:')
if(string.find(ls,ss)!=-1):
print 'find it'
else:
print 'fail'
用help(string.find)可看到关于find()方法的描述:
Help on function find in module string:
find(s, *args)
find(s, sub [,start [,end]]) -> in
Return the lowest index in s where substring sub is found,
such that sub is contained within s[start,end]. Optional
arguments start and end are interpreted as in slice notation.
Return -1 on failure.
string模块的find()方法常用于输出子字符串的索引,若不是子字符串就返回-1。于是在这里可以用来判断一个字符串是否为另一字符串的子串。
(三)第三种方法是用rfind(),其实rfind()和find()差不多,不同之处只是查找的顺序不同。find()从左至右(顺序)开始查找的而rfind()不一样,它是从右至左(倒序)进行查找的
import string
ss=raw_input('Enter a short sequence:')
ls=raw_input('Enter a long sequence:')
if(string.rfind(ls,ss)!=-1):
print 'find it'
else:
print 'fail'
下面简单比较一下find()和rfind()实现字符串的查找
s='kwok'
print s.find('k') #从左到右顺序查找,找到的第一个'k'在第0个索引(即第一个字符)
print s.rfind('k') #从右到左倒序查找,找到的第一个'k'在第3个索引
(四)第四种方法是index()方法
import string
ss=raw_input('Enter a short sequence:')
ls=raw_input('Enter a long sequence:')
try:
string.index(ls,ss)
print 'find it'
except(ValueError):
print 'fail'
index()方法跟find()方法一样,只不过如果找不到子字符串的话就会报一个ValueError异常
index()方法详细描述:
Help on function index in module string:
index(s, *args)
index(s, sub [,start [,end]]) -> int
Like find but raises ValueError when the substring is not found.
(五)第五种方法是rindex()方法,跟rfind()对应,在这里就不多说了