3-字符串常用操作
基于%号+占位符,实现格式化输出
# 要输出一个数字
num = 10
print("WD%04d" % num) # WD0010
num = 10
print("%04d" % num) # 0010
# 格式化输出浮点数
num = 3.5
print("%.2f元" % num) # 3.50元
字符串.capitalize()
字符串首个字母大写,如果字符串首个字符不是字母,则不会转换大写。
s1 = "hello world"
print(s1) # hello world
ret = s1.capitalize()
print(ret) # Hello world
字符串.count(字符子串)
统计字符子串在字符串中出现的次数
s1 = "hello world"
ret = s1.count("l")
print(ret) # 3
字符串.encode() 编码,把一个字符串转换成二进制安全格式字符串(bytes类型)
字符串.decode() 解码,把一个二进制安全格式字符串转换成普通字符串
encode和decode() 默认都有个encoding参数选项用于设置当前字符串的编码类型,默认是utf-8
常见于:网络传输的数据,跨平台传输的数据,从内存、硬盘中读取的数据、加密解密都可能是bytes
s1 = "中文"
data = s1.encode()
print(data) # b'\xe4\xb8\xad\xe6\x96\x87'
# 声明一个bytes字符串
s2 = b'\xe4\xb8\xad\xe6\x96\x87'
data = s2.decode()
print(data) # 中文
# encode也可以用于转换字符编码
s1 = "你好"
data = s1.encode(encoding="gbk")
print(data) # b'\xc4\xe3\xba\xc3'
# 如果字符串在编码的时候,设置了非utf-8,则字符串在解码的时候,也要使用对应的非utf-8编码,否则python会报UnicodeDecodeError编码解码错误
s2 = b'\xc4\xe3\xba\xc3'
data = s2.decode(encoding="gbk")
print(data) # 你好
字符串.endswith(字符子串) # 判断字符串是否以字符子串结尾
字符串.startswith(字符子串) # 判断字符串是否以字符子串开头
字符串.find(字符子串) # 获取字符子串在字符串的下标位置,找不到结果为-1,找到则返回首次出现的下标位置,从0开始 [不报错!]
字符串.index(字符子串) # 获取字符子串在字符串的下标位置,找不到则报错,找到则返回首次出现的下标位置,从0开始 [报错!]
# 判断某个人是否姓"张"
name = "王晓明"
ret = name.startswith("张")
print(ret) # False
name = "王晓明"
if name.startswith("张"):
print("你好,张先生!!") # 空
# 判断某个人的名字里面是否有"明"
name = "王晓明"
ret = name.find("张")
print( ret ) # -1
name = "王晓明"
ret = name.find("王")
print( ret ) # 0
name = "王晓明"
ret = name.find("明")
print( ret ) # 2
# 判断某个人的名字是否以"明"结尾
name = "王晓明"
ret = name.endswith("明")
print( ret ) # True
# 判断是否是QQ邮箱
mail = "1234@qq.com"
ret = mail.endswith("qq.com")
print(ret) # True
# 判断是否是一个合法的邮箱
mail = "1234@qq.com"
ret1 = mail.index("@")
print(ret1) # 4
ret2 = mail.index(".")
print(ret2) # 7
if ret1 < ret2:
print("邮箱合法!") # 邮箱合法! 以后用正则判断更为准确!当然要最准确的话,就要通过发送邮件来证明
注意:find默认从左往右查找字符子串出现的第一个位置,如果希望从右往左查,则使用rfind
s1 = "hello world"
index = s1.find("l")
print(index) # 2
s1 = "hello world"
index = s1.rfind("l")
print(index) # 9
判断字符串的组成成分
字符串.isalnum() 如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True 否则返回 False
s1 = "hello100"
ret = s1.isalnum()
print(ret) # True
s1 = "hello+100"
ret = s1.isalnum()
print(ret) # False
字符串.isdecimal() 如果 string 只包含十进制数字则返回 True 否则返回 False
s1 = "123kl5k23k34"
ret = s1.isdecimal()
print(ret) # False
# s1 = "12352.334" # 这种也为False
s1 = "12352334" # 这种才是True
ret = s1.isdecimal()
print(ret)
字符串.isspace() # 判断是否是空白字符串,空格字符串
s1 = "" # 空字符串,False
ret = s1.isspace()
print(ret) # False
s1 = " " # 空格组成的,True
ret = s1.isspace()
print(ret) # True
字符串 分割与合并
子串.join(序列) # 合并序列中每一个成员,使用指定子串进行拼接一个字符串
字符串.split(子串) # 使用子串作为分隔符,把字符串按子串分割成多段,组成一个列表 [列表至少有一个成员]
字符串 转 列表 ---> 分割
列表/元组 转 字符串 ---> 合并
data = ["北京市", "昌平区", "白沙路"]
ret = "--".join(data)
print(ret) # 北京市--昌平区--白沙路
s1 = "北京市-昌平区-白沙路"
ret = s1.split("-")
print(ret) # ['北京市', '昌平区', '白沙路']
# 如果无法分割,也不会报错,但是会把整个字符串作为一个整体,保存到列表中作为一个成员
s1 = "北京市-昌平区-白沙路"
ret = s1.split(":")
print(ret) # ['北京市-昌平区-白沙路']
字符串.splitlines() 按行分割
# 假设这个字符串是在一个文件中读取出来
content = """君不见黄河之水天上来,奔流到海不复回。
君不见高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。
与君歌一曲,请君为我倾耳听。
钟鼓馔玉不足贵,但愿长醉不复醒。"""
for item in content.splitlines():
print(">>> ", item)
# >>> 君不见黄河之水天上来,奔流到海不复回。
# >>> 君不见高堂明镜悲白发,朝如青丝暮成雪。
# >>> 人生得意须尽欢,莫使金樽空对月。
# >>> 天生我材必有用,千金散尽还复来。
# >>> 烹羊宰牛且为乐,会须一饮三百杯。
# >>> 岑夫子,丹丘生,将进酒,杯莫停。
# >>> 与君歌一曲,请君为我倾耳听。
# >>> 钟鼓馔玉不足贵,但愿长醉不复醒。
字母转换大小写
字符串.lower() # 把字符串中的英文字母转换成小写
字符串.upper() # 把字符串中的英文字母装换成大写
字符串.title() # 按广告标题格式,把字符串那种所有单词的首字母转换成大写
s1 = "get"
ret = s1.upper()
print(ret) # GET
s2 = "POST"
ret = s2.lower()
print(ret) # post
s3 = "hello world"
ret = s3.title()
print(ret) # Hello World
字符串.strip() # 去除字符串的两边空格,注意:字符串中间的空格不会被删除,只会删除两边连续的空格
字符串.lstrip() # 去除字符串的左边空格,注意:字符串中间的空格不会被删除,只会删除左边连续的空格
字符串.rstrip() # 去除字符串的右边空格,注意:字符串中间的空格不会被删除,只会删除右边连续的空格
s1 = "hello world"
print(len(s1), s1) # 11 hello world
s2 = " hello wolrd "
ret = s2.strip()
print(len(ret), ret) # 11 hello wolrd
s2 = " hello wolrd "
ret = s2.lstrip()
print(len(ret), ret) # 14 hello wolrd
s2 = " hello wolrd "
ret = s2.rstrip()
print(len(ret), ret) # 14 hello wolrd
字符串替换
字符串.replace(旧子串, 新子串, 替换次数)
# 默认是全部替换
s1 = "python37 python37"
# 把 python 换成 java
ret = s1.replace("python", "java")
print(ret) # java37 java37
# 也可以指定替换次数
s1 = "python37 python37"
# 把 python 换成 java
ret = s1.replace("python", "java", 1)
print(ret) # java37 python37