您的位置:首页 > 编程语言 > Python开发

python判断一个字符串是否为另一字符串的子串的几种方法

2012-03-28 23:37 1066 查看
字符串类型是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()对应,在这里就不多说了

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息