以下介绍Python中一些常用的已经嵌套的字符串函数,利用这些函数可以使我们在打代码的时候不用自己苦逼地自己写相应的函数,可以让我们事半功倍,用起来很方便,不过在用之前一定可以要清楚函数相应的参数的意义,如果要知道函数的具体实现,可以按下ctrl+B,就可以查看。
# 字符串
# 1、字符串拼接
# 1.1、利用加号
print("I am learning " + "python.") # 这三句结果都为I am learning python.
# 1.2、直接写在一起
print("I am learning " "python.")
# 1.3、利用占位符
print("I am learning %s" % "python")
# 1.4、利用乘号
print("nice\t" * 3) # 结果为nice nice nice,每个字符串中间都间隔四位
# 2、字符串切片
# 2.1、通过下标获取特定位
str = "abcdefg"
print(str[0]) # 获取第一位
print(str[-1]) # 获取最后一位,当下标为负数时,从后往前索引
# 2.2、通过长度来获取片段,name[start:end:step],获取范围是[start,end),
# 当step>0时从左往右,小于0时从右往左
print(str[0:3:2]) # 结果为ac
print(str[-1:0:-2]) # 结果为gec
print(str[::-1]) # 反转字符串
# 3、字符串函数
# 3.1、len(name) 字符串中字符的个数
# 3.2、查找计数
# name.find(sub, start, end) 在命名为name的字符串中从start到end范围内查找子字符串,
# 若找到则返回匹配的第一个字符的下标,找不到则返回-1
name = "I am learning python."
print(name.find("am")) # 结果为2
print(name.rfind("f")) # 结果为-1,rfind()从右往左查找
# name.index(sub, start, end) 获取子串的位置,找到则返回索引,找不到则报错
# name.rindex(sub, start, end) 功能与index()一致,从右往左获取
print(name.index("am")) # 结果为2
print(name.rindex("am")) # 结果为2
# name.count(sub, start, end) 计算子字符串的个数
print(name.count("n")) # 结果为3
# 3.3、转换函数
# name.replace(old, new, count) 把字符串中的子字符串转换成新的,转换的数目由count决
# 定, count默认为1,返回转换后的新字符串,但注意原字符串没有发生改变。
print(name.replace("n", "m")) # 结果为I am learmimg pythom.
print(name.replace("n", "m", 1)) # 结果为I am learming python.
print(name.replace("I am", "You're", 1)) # 结果为You're learning python.
name = "i am learning python."
print(name.capitalize()) # 将字符串的首字母变成大写,结果为I am learning python.
print(name.title()) # 将字符串中每个单词的首字母变成大写,结果为I Am Learning Python.
name1 = "I Am Learning Python."
print(name1.lower()) # 将字符串中每个字母都变成小写
print(name1.upper()) # 将字符串中每个字母都变成大写
# 3.4、填充压缩
# name.ljust(width, char) 当字符串的长度小于width时,用字符char填充在字符串的右侧,
# 直到填充后的长度为width
print(name.ljust(25, 'y')) # 结果为i am learning python.yyyy
print(name.rjust(25, 'y')) # 在字符串的左边填充字符,结果为yyyyi am learning python.
print(name.center(26, 'y')) # 原字符串居中,填充的字符分布在两侧,当不能平方时,右侧填充的
# 字符数比左侧多1,结果为yyi am learning python.yyy
# name.lstrip(chars) 删除字符串中左侧指定的字符,当遇到不包括在chars中的字符时停止,
# chars默认为空白符
name = "i aam learning python."
print(name.lstrip("i am")) # 结果为learning python.
print(name.rstrip("no.")) # 删除右侧指定的字符,结果为i aam learning pyth
# 3.5、分割拼接
# name.split(sep, max_split) 把字符串分割成子字符串,sep为分隔符,max_split为最大的分割
# 次数,如果省略那就是有多少分割多少,返回分割后的子字符串组成的列表
str = "123-456-789"
print(str.split("-")) # 结果为['123', '456', '789']
print(str.split("-", 1)) # 结果为['123', '456-789']
# name.partition(sep) 从字符串的左侧开始查找分隔符sep,若找到分隔符,则返回一个元组,
# 由分隔符左侧的内容、分隔符、分隔符右侧的内容组成
print(str.partition("-")) # 结果为('123', '-', '456-789')
print(str.partition(" ")) # 结果为('123-456-789', '', ''),找不到分隔符就以这种形式返回
# name.rpartition(sep) 从字符串的右侧开始查找分隔符sep,与name.partition(sep)功能一致
print(str.rpartition("-")) # 结果为('123-456', '-', '789')
# name.splitlines(keepends) 按换行符\r、\n对字符串进行分割,keepends为bool型,
# 表示是否保留换行符,返回由分割后组成的子字符串组成的列表
name = "xxx\rbbb\n"
print(name.splitlines()) # 结果为['xxx', 'bbb']
print(name.splitlines(True)) # 结果为['xxx\r', 'bbb\n']
# name.join(iterable) 对可迭代的对象用给定的字符串进行拼接,返回拼接后的字符串,
# 可迭代的对象包括字符串、元组、列表等
name = "xxx"
item = ["i", "am", "learning"]
print(name.join(item)) # 结果为ixxxamxxxlearning
# 3.6、判定
# name.isalpha() 判断字符串中所有字符是否都为字母,返回bool型
name = "abn"
print(name.isalpha()) # 结果为True
# name.isdigit() 判断字符串中所有字符是否都为数字,返回bool型
name = "12abn"
print(name.isdigit()) # 结果为False
# name.isalnum() 判断字符串中所有字符是否都为数字或字母,返回bool型
name = "12abn"
print(name.isalnum()) # 结果为True
# name.isspace() 判断字符串中所有字符是否都为空白符,包括空格、缩进、换行等不可见转义符,
# 返回bool型
name = "\n"
print(name.isspace()) # 结果为True
name = ""
print(name.isspace()) # 结果为False,至少得有一个字符,否则判定为假
# name.startswith(prefix, start, end) 判断字符串是否以指定的前缀开头
name = "2018.9.1"
print(name.startswith("2018")) # 结果为True
# name.endswith(suffix, start, end) 判断字符串是否以指定的后缀结束
name = "xx.doc"
print(name.endswith(".doc")) # 结果为True
# in 和 not in 判断一个字符串是否包含在另一个字符串里面
print("ss" in "i xx sss") # 结果为True
print("am" not in "smm ffn") # 结果为True