第6章 python字符串 (字符串的内建函数)

本文详细介绍了Python中字符串的创建、访问、修改及删除,包括序列操作符如连接、重复、切片和成员关系操作,以及格式化操作符。同时,列举了字符串的内建函数,如`capitalize`、`count`、`encode`等,并强调了字符串的不变性和Unicode处理。此外,还讨论了特殊字符串如f-string和原始字符串的特点。
摘要由CSDN通过智能技术生成

1、序列

1、标准类型操作符

数值的比较   ==   !=

身份的比较   is   is not

2、序列类型操作符

1、成员关系操作符  in  not in 

2、连接操作符    +

print("abc" + "cdf")
print([1, 2, 3] + [6])
print((1, 2, 3, 4) + (6,))

E:\env\python39\python.exe D:\项目\python\deke\test.py 
abccdf
[1, 2, 3, 6]
(1, 2, 3, 4, 6)

3、重复操作符   *

print("i love you" * 4)
print([None] * 4)
print((1, 2) * 4)

E:\env\python39\python.exe D:\项目\python\deke\test.py 
i love youi love youi love youi love you
[None, None, None, None]
(1, 2, 1, 2, 1, 2, 1, 2)

4、切片操作符  [:]   [::]

开始和结束素引值可以超过字符串的 长度

不包含结束位置下标对应的数据, 正负整数均可

numstr = '0123456789'
# 1、从2到5开始切片,步长为1
print(numstr[2:5:1])
print(numstr[2:5])
print(numstr[:5]
print(numstr[1:])
# 4、获取或拷贝整个字符串
print(numstr[:])

# 类似求偶数
print(numstr[::2])
# 类似字符串翻转
print(numstr[::-1])

# 如截取012345678
print(numstr[:-1])
3、内建函数

工厂函数:str()  list()  tuple() 

enumrate() 

print(list(enumerate("abc")))
print(enumerate(["cheng", "xu", "yuan"]))

E:\env\python39\python.exe D:\项目\python\deke\test.py 
[(0, 'a'), (1, 'b'), (2, 'c')]
<enumerate object at 0x000001752AB56F40>

len() 

max()  也可用与字符串,按照ASCII码

min()   也可用与字符串,按照ASCII码

sum()   不适用于字符串

revesered() 

sorted()

2、字符串的介绍

1、字符串的创建

同数字

字符串可以用单引号、双引号、三引号

2、字符串的访问

索引和切片来进行访问

3、字符串的修改
a = "12344567"
a[0] = 3
4、字符串的删除

字符串是可不变类型,所以无法删除某个字符

del 删除整个字符

a = "123456789"
a = a[:6] + a[7:]

3、字符串和操作符

1、标准类型操作符

2、序列操作符

4、只适用于字符串的操作符

1、格式化操作符%

%C 格式化字符及其ASCII码

%s 格式化字符串

%d 格式化整数

%u 格式化无符号整型

%o 格式化无符号八进制数

%X 格式化无符号十六进制数

%X 格式化无符号十六进制数(大写)

%f 格式化浮点数字,可指定小数点后的精度

%e 用科学计数法格式化浮点数

%E 作用同%e,用科学计数法格式化浮点数

%g %f和%e的简写

%G %F和%E的简写

%p 用十六进制数格式化变量的地址
 

2、原始字符串操作符( r/R )

原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。

>>> '\n'
'\n'
>>> print '\n'


>>> r'\n'
'\\n'
>>> print r'\n'
\n

3、Unicode 字符串操作符( u/U )

中文转unicode

hanzi="明"
str1=hanzi.encode("unicode_escape")#转字节字符
print(str1)#打印字节字符
bma=str(str1)[-5:][:4]#字节转字符并取出单个字的4位u编码

6、字符串的内建函数(重点)

字符串的内建函数共80个

if __name__ == '__main__':
    print(dir(str))


E:\env\python39\python.exe D:\项目\python\deke\test.py 
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

方法的详解(其中包括魔法方法,实例方法,静态方法,类方法等)

摘自 python3.9版本的 builtins.py  和 python官方文档

class str(object):

    def capitalize(self, *args, **kwargs):
        """
        返回原字符串的副本,其首个字符大写,其余为小写
        """
        pass

    def casefold(self, *args, **kwargs):
        """
        返回原字符串消除大小写的副本。 消除大小写的字符串可用于忽略大小写的匹配。
        消除大小写类似于转为小写,但是更加彻底一些,因为它会移除字符串中的所有大小写变化形式
        例如,德语小写字母 'ß' 相当于 "ss"。 由于它已经是小写了,lower() 不会对 'ß' 做任何改变;而 casefold() 则会将其转换为 "ss"
        """
        pass

    def center(self, *args, **kwargs):
        """
        width:返回长度为 width 的字符串,原字符串在其正中
        fillchar: 填充的字符
        """
        pass

    def count(self, sub, start=None, end=None):
        """
        返回子字符串 sub 在 [start, end] 范围内非重叠出现的次数。 可选参数 start 与 end 会被解读为切片表示法
        默认为0
        """
        return 0

    def encode(self, *args, **kwargs):
        """
        encoding:编码格式
        errors: strict /ignore
        """
        pass

    def endswith(self, suffix, start=None, end=None):
        """
        suffix:如果字符串以指定的 suffix 结束返回 True,否则返回 False
        start:开始下标
        end:结束下标
        """
        return False

    def expandtabs(self, *args, **kwargs):
        """
        返回字符串的副本,其中所有的制表符会由一个或多个空格替换,具体取决于当前列位置和给定的制表符宽度。
        每 tabsize 个字符设为一个制表位(默认值 8 时设定的制表位在列 0, 8, 16 依次类推)
        tabsize:制表位的大小

        '01\t012\t0123\t01234'.expandtabs()
        '01      012     0123    01234'
        '01\t012\t0123\t01234'.expandtabs(4)
        '01  012 0123    01234'
        """
        pass

    def find(self, sub, start=None, end=None):
        """
        返回子字符串 sub 在 s[start:end] 切片内被找到的最小索引。
        可选参数 start 与 end 会被解读为切片表示法。
        如果 sub 未被找到则返回 -1。
        """
        return 0

    def format(self, *args, **kwargs):
        """
        执行字符串格式化操作。 调用此方法的字符串可以包含字符串字面值或者以花括号 {} 括起来的替换域。
        每个替换域可以包含一个位置参数的数字索引,或者一个关键字参数的名称。
        返回的字符串副本中每个替换域都会被替换为对应参数的字符串值。
        "The sum of 1 + 2 is {0}".format(1+2)
        'The sum of 1 + 2 is 3'
        """
        pass

    def format_map(self, mapping):
        """
        类似于 str.format(**mapping),不同之处在于 mapping 会被直接使用而不是复制到一个 dict
        '{name} was born in {country}'.format_map(Default(name='Guido'))
        'Guido was born in country'
        """
        return ""

    def index(self, sub, start=None, end=None):
        """
        类似于 find(),但在找不到子类时会引发 ValueError。
        """
        return 0

    def isalnum(self, *args, **kwargs):
        """
        如果字符串中的所有字符都是字母或数字且至少有一个字符,则返回 True , 否则返回 False 。
        """
        pass

    def isalpha(self, *args, **kwargs):
        """
        如果字符串中的所有字符都是字母,并且至少有一个字符,返回 True ,否则返回 False
        """
        pass

    def isascii(self, *args, **kwargs):
        """
        如果字符串为空或字符串中的所有字符都是 ASCII ,返回 True ,否则返回 False 。ASCII 字符的码点范围是 U+0000-U+007F
        """
        pass

    def isdecimal(self, *args, **kwargs):
        """
        如果字符串中的所有字符都是十进制字符且该字符串至少有一个字符,则返回 True , 否则返回 False 。
        """
        pass

    def isdigit(self, *args, **kwargs):
        """
        如果字符串中的所有字符都是数字,并且至少有一个字符,返回 True ,否则返回 False
        """
        pass

    def isidentifier(self, *args, **kwargs):
        """
        如果字符串是有效的标识符,返回 True ,
        检测字符串是否是有效标识符
        """
        pass

    def islower(self, *args, **kwargs):
        """
        如果字符串中至少有一个区分大小写的字符 ,且此类字符均为小写则返回 True ,否则返回 False
        """
        pass

    def isnumeric(self, *args, **kwargs):
        """
        如果字符串中至少有一个字符且所有字符均为数值字符则返回 True ,否则返回 False 。
        """
        pass

    def isprintable(self, *args, **kwargs):
        """
        如果字符串中所有字符均为可打印字符或字符串为空则返回 True ,否则返回 False 。
        """
        pass

    def isspace(self, *args, **kwargs):
        """
        如果字符串中只有空白字符且至少有一个字符则返回 True ,否则返回 False
        """
        pass

    def istitle(self, *args, **kwargs):
        """
        如果字符串中至少有一个字符且为标题字符串则返回 True ,例如大写字符之后只能带非大写字符而小写字符必须有大写字符打头。
        否则返回 False
        """
        pass

    def isupper(self, *args, **kwargs):
        """
        如果字符串中至少有一个区分大小写的字符 且此类字符均为大写则返回 True ,否则返回 False 。
        """
        pass

    def join(self, ab=None, pq=None, rs=None):
        """
        返回一个由 iterable 中的字符串拼接而成的字符串。
        如果 iterable 中存在任何非字符串值包括 bytes 对象则会引发 TypeError。 调用该方法的字符串将作为元素之间的分隔

        Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
        """
        pass

    def ljust(self, *args, **kwargs):
        """
        width:
        fillchar:
        返回长度为 width 的字符串,原字符串在其中靠左对齐。 使用指定的 fillchar 填充空位
        """
        pass

    def lower(self, *args, **kwargs):
        """
        返回原字符串的副本,其所有区分大小写的字符 4 均转换为小写
        """
        pass

    def lstrip(self, *args, **kwargs):
        """
        chars:
        返回原字符串的副本,移除其中的前导字符。
        chars 参数为指定要移除字符的字符串。 如果省略或为 None,则 chars 参数默认移除空白符。
        实际上 chars 参数并非指定单个前缀;而是会移除参数值的所有组合:
        """
        pass

    def maketrans(self, *args, **kwargs):
        """
        此静态方法返回一个可供 str.translate() 使用的转换对照表。
        如果只有一个参数,则它必须是一个将 Unicode 码位序号(整数)或字符(长度为 1 的字符串)映射到 Unicode 码位序号、
        (任意长度的)字符串或 None 的字典。 字符键将会被转换为码位序号。
        如果有两个参数,则它们必须是两个长度相等的字符串,并且在结果字典中,x 中每个字符将被映射到 y 中相同位置的字符。
        如果有第三个参数,它必须是一个字符串,其中的字符将在结果中被映射到 None。.
        """
        pass

    def partition(self, *args, **kwargs):
        """
        在 sep 首次出现的位置拆分字符串,返回一个 3 元组,其中包含分隔符之前的部分、分隔符本身,以及分隔符之后的部分。
        如果分隔符未找到,则返回的 3 元组中包含字符本身以及两个空字符串
        """
        pass

    def removeprefix(self, *args, **kwargs):
        """
        如果字符串以 prefix 字符串开头,返回 string[len(prefix):]。 否则,返回原始字符串的副本:

        'TestHook'.removeprefix('Test')
        'Hook'
        'BaseTestCase'.removeprefix('Test')
        'BaseTestCase'
        """
        pass

    def removesuffix(self, *args, **kwargs):
        """
        如果字符串以 suffix 字符串结尾,并且 suffix 非空,返回 string[:-len(suffix)]。 否则,返回原始字符串的副本:

        'MiscTests'.removesuffix('Tests')
        'Misc'
        'TmpDirMixin'.removesuffix('Tests')
        'TmpDirMixin'
        """
        pass

    def replace(self, *args, **kwargs):
        """
        old:
        new:
        count:
        返回字符串的副本,其中出现的所有子字符串 old 都将被替换为 new。 如果给出了可选参数 count,则只替换前 count 次出现。
        """
        pass

    def rfind(self, sub, start=None, end=None):
        """
        返回子字符串 sub 在字符串内被找到的最大(最右)索引,这样 sub 将包含在 s[start:end] 当中。
        可选参数 start 与 end 会被解读为切片表示法。 如果未找到则返回 -1
        """
        return 0

    def rindex(self, sub, start=None, end=None):
        """
        类似于 rfind(),但在子字符串 sub 未找到时会引发 ValueError
        """
        return 0

    def rjust(self, *args, **kwargs):
        """
        返回长度为 width 的字符串,原字符串在其中靠右对齐。
        使用指定的 fillchar 填充空位 (默认使用 ASCII 空格符)。 如果 width 小于等于 len(s) 则返回原字符串的副本。
        """
        pass

    def rpartition(self, *args, **kwargs):
        """
       在 sep 最后一次出现的位置拆分字符串,返回一个 3 元组,其中包含分隔符之前的部分、分隔符本身,以及分隔符之后的部分。
       如果分隔符未找到,则返回的 3 元组中包含两个空字符串以及字符串本身。
        """
        pass

    def rsplit(self, *args, **kwargs):
        """
        sep:
        maxsplit:
        返回一个由字符串内单词组成的列表,使用 sep 作为分隔字符串。
        如果给出了 maxsplit,则最多进行 maxsplit 次拆分,从 最右边 开始。 如果 sep 未指定或为 None,任何空白字符串都会被作为分隔符。
        """
        pass

    def rstrip(self, *args, **kwargs):
        """
        返回原字符串的副本,移除其中的末尾字符。 chars 参数为指定要移除字符的字符串。
        如果省略或为 None,则 chars 参数默认移除空白符。 实际上 chars 参数并非指定单个后缀;而是会移除参数值的所有组合:

        '   spacious   '.rstrip()
        '   spacious'
        'mississippi'.rstrip('ipz')
        'mississ'
        """
        pass

    def split(self, sep=None, maxsplit=-1):
        """
        返回一个由字符串内单词组成的列表,使用 sep 作为分隔字符串。 如果给出了 maxsplit,
        则最多进行 maxsplit 次拆分(因此,列表最多会有 maxsplit+1 个元素)。
        如果 maxsplit 未指定或为 -1,则不限制拆分次数(进行所有可能的拆分)
        """
        pass

    def splitlines(self, *args, **kwargs):
        """
        返回由原字符串中各行组成的列表,在行边界的位置拆分

        """
        pass

    def startswith(self, prefix, start=None, end=None):
        """
        如果字符串以指定的 prefix 开始则返回 True,否则返回 False。 prefix 也可以为由多个供查找的前缀构成的元组。
        如果有可选项 start,将从所指定位置开始检查。 如果有可选项 end,将在所指定位置停止比较。
        """
        return False

    def strip(self, *args, **kwargs):
        """
        chars:
        返回原字符串的副本,移除其中的前导和末尾字符。
        chars 参数为指定要移除字符的字符串。 如果省略或为 None,则 chars 参数默认移除空白符。
        """
        pass

    def swapcase(self, *args, **kwargs):
        """
        大小写的转换
        返回原字符串的副本,其中大写字符转换为小写,反之亦然。 请注意 s.swapcase().swapcase() == s 并不一定为真值。
        """
        pass

    def title(self, *args, **kwargs):
        """
        返回原字符串的标题版本,其中每个单词第一个字母为大写,其余字母为小写。
        """
        pass

    def translate(self, *args, **kwargs):
        """
        返回原字符串的副本,其中每个字符按给定的转换表进行映射。
        转换表必须是一个使用 __getitem__() 来实现索引操作的对象,通常为 mapping 或 sequence。
        当以 Unicode 码位序号(整数)为索引时,转换表对象可以做以下任何一种操作:返回 Unicode 序号或字符串,
        将字符映射为一个或多个字符;返回 None,将字符从结果字符串中删除;或引发 LookupError 异常,将字符映射为其自身。
        """
        pass

    def upper(self, *args, **kwargs):
        """
         返回原字符串的副本,其中所有区分大小写的字符 4 均转换为大写
         """
        pass

    def zfill(self, *args, **kwargs):
        """
        width:
        返回原字符串的副本,在左边填充 ASCII '0' 数码使其长度变为 width。
        正负值前缀 ('+'/'-') 的处理方式是在正负符号 之后 填充而非在之前。
        如果 width 小于等于 len(s) 则返回原字符串的副本

         "42".zfill(5)
        '00042'
        "-42".zfill(5)
        '-0042'
        """
        pass

    def __add__(self, *args, **kwargs):
        """ Return self+value. """
        pass

    def __contains__(self, *args, **kwargs):
        """ Return key in self. """
        pass

    def __eq__(self, *args, **kwargs):
        """ Return self==value. """
        pass

    def __format__(self, *args, **kwargs):
        """ Return a formatted version of the string as described by format_spec. """
        pass

    def __getattribute__(self, *args, **kwargs):
        """ Return getattr(self, name). """
        pass

    def __getitem__(self, *args, **kwargs):
        """ Return self[key]. """
        pass

    def __getnewargs__(self, *args, **kwargs):
        pass

    def __ge__(self, *args, **kwargs):
        """ Return self>=value. """
        pass

    def __gt__(self, *args, **kwargs):
        """ Return self>value. """
        pass

    def __hash__(self, *args, **kwargs):
        """ Return hash(self). """
        pass

    def __init__(self, value='', encoding=None, errors='strict'):
        """

        value: 对象参数
        encoding:编码格式
        errors: 是否是严格格式
     

        
        """
        pass

    def __iter__(self, *args, **kwargs):
        """ Implement iter(self). """
        pass

    def __len__(self, *args, **kwargs):
        """ Return len(self). """
        pass

    def __le__(self, *args, **kwargs):
        """ Return self<=value. """
        pass

    def __lt__(self, *args, **kwargs):
        """ Return self<value. """
        pass

    def __mod__(self, *args, **kwargs):
        """ Return self%value. """
        pass

    def __mul__(self, *args, **kwargs):
        """ Return self*value. """
        pass

    @staticmethod
    def __new__(*args, **kwargs):
        """ Create and return a new object.  See help(type) for accurate signature. """
        pass

    def __ne__(self, *args, **kwargs):
        """ Return self!=value. """
        pass

    def __repr__(self, *args, **kwargs):
        """ Return repr(self). """
        pass

    def __rmod__(self, *args, **kwargs):
        """ Return value%self. """
        pass

    def __rmul__(self, *args, **kwargs):
        """ Return value*self. """
        pass

    def __sizeof__(self, *args, **kwargs):
        """ Return the size of the string in memory, in bytes. """
        pass

    def __str__(self, *args, **kwargs):
        """ Return str(self). """
        pass

7、字符串的独特特性

1、特殊字符串和控制字符

特殊字符串:

        f 字符串(格式化字符串)

        r 字符串(原始字符串)

        b:前缀用于表示字节字符串(bytes string)

        u 前缀用于表示Unicode字符串(unicode string)

控制字符:

        \n \t 等

2、三引号

三引号用于表示多行字符串(multiline string)。多行字符串可以跨越多行,并且可以包含换行符和其他特殊字符

3、字符串的不变性

字符串是一种不可变数据类型,就是说它的值是不能被改 变或修改的。这就意味着如果你想修改一个字符串,或者截取一个子串,或者在字符串的末尾 连接另一个字符串等等,你必须新建一个字符串。

8、unicode

9、字符串的关键总结

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值