python3-str

发布时间 2023-04-17 00:45:29作者: 挖洞404

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()
  • 判断字符串是否全部由字母字符组成