1、介绍
builtins.py文件中定义了str类,用于处理python中字符和字符串数据。
str也是python的基本数据类型之一。
2、类
class str(object):
def __init__(self, value='', encoding=None, errors='strict'):
"""
str(object='') -> str
str(bytes_or_buffer[, encoding[, errors]]) -> str
"""
pass
3、字面量初始化
- 字面量赋值,需要引号包围,可以是成对的单引号或双引号。
- 也可以是成对的由单引号或双引号组成的三引号,这可以用于表示多行字符串文本
# 字面量赋值
a = "abc"
a1 = 'ddd'
a2 = """123
zzz"""
a3 = '''z
fd
'''
# 转义字符
a4 = "\nabc\t" # 长度为5
4、类初始化
- 可以转换其他基本数据类型为str,包括None值,这些类型的结果基本是原值的字面量形式
- 如果参数是对象,那么结果是该对象的类和地址信息
b = str("abc")
b1 = str(None)
class stu:
d = "ggg"
print(str(stu())) # <__main__.stu object at 0x0000027ABB6A29A0>
参数是字节
print("abc时间".encode("gbk"))#b'abc\xca\xb1\xbc\xe4'
print("abc时间".encode("utf-8"))#b'abc\xe6\x97\xb6\xe9\x97\xb4'
print(sys.getdefaultencoding())#utf-8
print(str(b'abc\xca\xb1\xbc\xe4', encoding="gbk"))#abc时间
print(str(b'abc\xe6\x97\xb6\xe9\x97\xb4'))#b'abc\xe6\x97\xb6\xe9\x97\xb4'
str并不会对字节数据进行自动解码,如果没有指定encoding参数,会将二进制表述转为字符序列,即b’abc’占据6个字符。
encoding指定为正确的编码,会将字节数据正确解码。而指定错误,会报错
5、属性
6、方法
(1)大小写
lower() # 将字母转为小写模式
upper() # 将字母转为大写模式
islower() # 判断包含的字母是否全部为小写
isupper() # 判断包含的字母是否全部为大小
(2)分割
split(sep:str, maxsplit=-1)
- sep参数为空字符串,会报错。
- sep在调用该方法的字符串中不存在时,返回一个list,其有且只有一个元素,即为调用方法的字符串
- maxsplit默认为-1,表示切割后list的元素个数为字符串中包含sep的个数+1,
- maxsplit设置为0,表示不切割,即返回一个list,其有且只有一个元素,为调用方法的字符串
- maxsplit设置为正整数,表示按照前n个sep子字符串进行分割,剩余的视作不再分割
(3)index和find
index(self, sub, start=None, end=None)
- sub参数表示匹配的子字符串,如果匹配,返回第一次匹配的第一个字符的索引,如果不匹配,则报异常ValueError
find(self, sub, start=None, end=None)
- 功能与index相同,如果不匹配,返回-1
(4)匹配首末
startswith(self, prefix, start=None, end=None) # 匹配是否以prefix参数开始
endswith(self, suffix, start=None, end=None) # 匹配是否以prefix参数结束
- 注意prefix并不是正则
(5)匹配次数
count(self, sub, start=None, end=None) # 返回匹配sub的次数
- 也不支持正则
(6)替换
replace(self, *args, **kwargs)
- 不支持正则
(7)去除空白
strip() # 首尾去除空白字符
rstrip() # 尾部去除空白字符
lstrip() # 首部去除空白字符
(8)字符判断
# 是十进制
isdecimal()
# 是数字
isdigit()
- 判断字符串是否由0-9组成,”012″都判断为True,”0.12″和”0x12″两个方法都判断为False
isascii()
- 判断字符串是否全部由ascii字符组成
isalpha()
- 判断字符串是否全部由字母字符组成