Python 内置函数

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
上一篇:字母爱心


下一篇:变量