str内置函数
- 字符出查找类,find,index,islower
- find: 查找字符串中是否包含一个字符串
- index: 跟find的唯一区别是index如果找不到会引发异常
- rfind, lfind:从左开始查找或这从右开始查找
s = "Liu Dana love Wang xiaojing and Zhangxiaojing"
s1 = "xiaojing"
# 返回第一次发现这个字符串的位置
s.find(s1)
s2 = "Wanwan"
s.find(s2)
-1
help(str.index)
Help on method_descriptor:
index(...)
S.index(sub[, start[, end]]) -> int
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.
Raises ValueError when the substring is not found.
# index会报错或者引发异常
s.index(s2)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-7-c2e5d6055b64> in <module>()
----> 1 s.index(s2)
ValueError: substring not found
# 使用的时候还可以使用区间
s = "Liu Dana love Wang xiaojing and Zhang xiaojing"
s1 = "xiaojing"
#从下标20开始查找,看能否找到
s.find(s1,25)
38
判断类函数
-
此类函数的特点是一般都用is开头,比如islower
-
isalpha: 判断是否是字母,需要注意的是两点:
- 此函数默认的前提是字符串至少包含一个字符,如果没有,同样返回False。
- 汉字被认为是alpha,所以,此函数不饿能作为区分英语字母还是汉字得标识,区分中英文请使用unicode码
- 注意使用区别,防止被坑
-
isdigit,isnumeric,isdecimal 三个判断数字的函数
-
此类函数不建议使用,在后期爬虫中,判断是否是数字建议采用正则表达式的方式
对三个函数的一个总结:
digit:
True:Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
False:汉字数字
Error:无
isdecimal():
True:Unicode数字,全角数字(双字节)
False:罗马数字,汉字数字
Error: byte数字(单字节)
isnumeric()
True:Unicode数字,全角数字(双字节),罗马数字,汉字数字
False:无
Error:byte数字(单字节)
-
-
islower判断是否是大写或小写
# 以下三个都不是,因为有除了字母以外的空格等
s1 = "我们对着灯发誓, 某同学。。"
s2 = "bengereba is friend of baberbeng"
s3 = "YeGe Is My fined 1.st"
print(s1.isalpha())
print(s2.isalpha())
print(s3.isalpha())
False
False
False
# 需要注意的是,因为输入法的问题,输入罗马数字可能得不到我们想要的结果
chin_num = "一二三四"
print(chin_num.isdigit())
print(chin_num.isnumeric())
print(chin_num.isdecimal())
False
True
False
内容判断类
- startswith/endswith: 是否以xxx开头或者结尾
- 检测某个字符串是否以某个字符串开头,常用三个参数
- suffix:被检查的字符串,必须有
- start: 检查范围的开始范围
- end: 检查范围i的结束范围
- islower/isupper: 判断字符串是否是大写或者小写
name = "yegeli"
xiaojing = "xiaojing"
s = "yegeli really love xiaojing"
print(s.startswith(name))
print(s.endswith(xiaojing))
True
True
s1 = "Da love wang xiaojing"
s2 = "Dalovewagnxiaojing"
s3 = "dalovewangxiaojing"
# 包含空格,但空格不影响结果,忽略
s4 = "da love wangxiaojing"
s5 = "大爱王晓静"
print(s1.islower())
print(s2.islower())
print(s3.islower())
print(s4.islower())
# 汉字字符串无大小写概念
print(s5.islower())
print(s5.isupper())
False
False
True
True
False
False
操作类函数
- format: 格式化用
- strip: 这个函数主要作用是删除字符串两边的空格,其实这个函数允许你去定义删除字符串两边的哪个字符,只不过如果不指定的话默认是空格,同样还有lstrip和rstrip,此处l和r分别是左边右边,即删除字符串左边或者右边指定字符,默认空格。需要注意的是,此处的删除不是删除一个,是指从头开始符合条件的连续字符。
- strip相似的函数还包含了lstrip,rstrip
- join: 这个函数主要对字符出进行拼接。它需要一个可以迭代的内容作为参数(迭代的概念后面介绍,此处暂时理解成一个列表),功能时把可迭代的字符串拼接在一起,中间使用调用字符串作为分隔符。
c = "DDDDana love xiaojing "
# 是否成功删除两边空格不能观察出来
print(c.strip())
print()
print(c.strip(),end="----")
print("--------")
print(c.strip("D"))
print()
print(c.strip("D"),end="----")
DDDDana love xiaojing
DDDDana love xiaojing------------
ana love xiaojing
ana love xiaojing ----
help(str.strip)
Help on method_descriptor:
strip(self, chars=None, /)
Return a copy of the string with leading and trailing whitespace remove.
If chars is given and not None, remove characters in chars instead.
# join de例子,我们需要使用s1,s2,s3作为分隔符,把ss内的内容拼接在一起
s1 = "$"
s2 = "-"
s3 = ""
ss = ["Liu", "love", "Wang","Xiaojing"]
print(s1.join(ss))
print(s2.join(ss))
print(s3.join(ss))
Liu$love$Wang$Xiaojing
Liu-love-Wang-Xiaojing
LiuloveWangXiaojing