• 【Python3】Python中的字符串


    前言

            字符串是一种表示文本信息数据类型。在C中我们使用字符数组对其进行表示,并且没有封装其字符串的相关操作;C++中我们有库里面定义的一个自定义类型string能够对字符串类型进行操作。那么,在Python中,我们是如何对字符串这一类型进行操作的呢?

            首先,我们需要注意这一点:在 Python 和 Java 等语言中,字符串都被设计成「不可变」的类型,即无法直接修改字符串的某一位字符,需要新建一个字符串实现

            下面就和我一起来了解一下吧~同样的这也是我的一篇学习笔记哦,让我们一起成长吧~

    --------------------------------------------------------------------------------------------------------------------------------

    目录

    一、字符串的表示

    二、字符串的格式化操作

    1.使用%操作符格式化字符串

    2.使用format方法格式化字符串

            format中的参数和对应str的输出位置的对应关系:

            模板字符串str中的格式化控制:

    三、字符串的操作符

    四、字符串处理函数

            大小写转换函数:

            字符串查找替换函数:(注意[]表示里面的参数可有可不有(类似于C++中的缺省参数))

            字符串判断函数:

            字符串头尾判断函数:

            字符串计算函数:

            字符串对齐函数:

             字符串拆分合并函数:

             删除字符串中空格函数:

    五、输入输出语句

    1.输入语句input()和转换语句eval()

    2.输出语句print() 


    一、字符串的表示

            首先,我们就要从如何表示字符串开始入手了。

            正如之前初识Python那里所说的那样,Python中的字符串有三种表示方法:

    'Hello world'         单引号包围的字符串

    "Hello world"        双引号包围的字符串

    '''                          三引号包围的字符串

    多行字符串

    '''

            上面就是字符串的表示方法,里面就可以输入任意字符。虽然是任意,但是当你在里面想输入外面的引号的时候,就会出现问题,并且有时候,也想输入退格符、换行符、换页符等不可见字符的时候,该如何去输入呢?

            这个时候就要用到转义字符了。常用的转义字符如下表所示:

    转义符含义描述转义符含义描述
    \(在一行末尾)Python的续行符\n换行
    \\反斜杠符号\t横向制表符
    \'单引号\r回车
    \"双引号\f换页
    \a提示音\ooo八进制表示ASCII码对应字符
    \b退格\xhh十六进制表示ASCII码对应字符
    \0\other其他字符以普通格式输出

            比如利用转移字符中的16进制和8进制表示1这个字符(ASCII码值对应为49)

    1. s = '\61' # 八进制
    2. a = '\x31' # 十六进制
    3. print(s, a)

    二、字符串的格式化操作

             早在C语言的学习中,我们知道,printf可以进行格式化输出,让输出到控制台上的信息更加可读工整。C语言中使用的就是%操作符进行格式化字符串的。那么Python中格式化字符串是否可以使用%操作符呢?

            在Python中,针对字符串的格式化操作有两种:1.第一种就是使用%操作符进行格式化,2.使用str.format()方法进行格式化。

    1.使用%操作符格式化字符串

            "想输出的字符串格式" % 单个就是对应其变量/多个元素利用元组括起来()(元组里元素的顺序对应输出字符串里%的先后顺序)

    想要输出的字符串格式:

            %[(name)][flags][width].[precision]typecode   注:[]表示一个部分,真实写的时候不用写

            name:可选参数。如果输出对象是字典,那么此时(name)name就是指定输出对应值的那个键

            flags:可选参数。对齐方式:

    + 表示右对齐,正数前添加正号,负数前添加负号。

    - 表示左对齐,正数前无符号,负数前添加负号。

    空格 表示右对齐,正数前添加空格,负数前添加负号。

    0 表示右对齐,正数前无符号,负数前添加负号,并且用0填充未填充的地方。

            width:可选参数。指定格式字符串的占用宽度。如果目标宽度比设定的大则无视

            precision:可选参数。在小数点后(小数点表示在格式化输出浮点数的时候可带)指定保留几位小数。如果是字符串,那么.后此数字代表从左起截取多少个字符

            typecode:必选参数。指定格式控制符。

    格式控制符:

            

    符号描述
    %c格式化字符
    %s格式化字符串
    %d格式化整数
    %f格式化浮点数
    %e科学计数法浮点数

            如上,我们随便举一个测试代码:

    1. s = {'name': "你好"} # 字典,键name 值你好
    2. print("%(name)s" % s) # 单个对象直接使用变量名
    3. a = {'year': 2022, 'c_year': "二零二二年"}
    4. print("%(year)d用汉语来说就是%(c_year)s" % a)
    5. print("%c %+3d %-3d %03d %3.1f %e" % ('a', 2, -1, 2, 1.23, 1.23)) # 用元组形式对多个元素进行格式化输出字符串

     

    2.使用format方法格式化字符串

            为了更加方便对字符串进行格式化控制,在Python2.6开始,就对字符串类型增加了一种格式化控制的方法:format。格式为str.format()。此时的str就是一个模板字符串

            format中的参数和对应str的输出位置的对应关系

            在模板字符串里面设定{}format里参数对应输出的位置。当{}里面没有format中参数的序号的时候(从左到右,从零开始计数),从左到右就依次对应format里参数的左到右顺序(类似于%控制力元组里面的参数对应的位置),但是当{}里面有对应参数序号时,就可以指定对应的位置进行格式化输出。        

    1. print("{}!今年是{}!".format(2022, "二零二二年")) # 默认相对位置
    2. print("{1}!今年是{0}!".format("二零二二年", 2022)) # 指定位置

            

            在使用format格式化使用关键字参数的时候,{}占位符里写上"键"即可。

    print("{year} {c_year}".format(year=2022, c_year="二零二二"))  # 关键字参数,需要在占位符写上对应键
    

            注意想要使用format格式化某个字典类型的键所对应值的时候:

    1. s = {"year": 2022, "c_year": "二零二二"}
    2. print("{} {}".format(s.get('year'), s.get("c_year"))) # 格式化控制字典类型时

            使用序列的索引进行参数匹配:当format里的参数时元组或者列表的时候,{}可以凭借其下标进行访问对应的某个位置。 

    1. a1 = [1, 2, 3]
    2. a2 = ("Hello", 0, -1)
    3. print("{0[2]} {1[1]} {1[0]}".format(a1, a2)) # 通过列表、元组的下标索引进行访问

            模板字符串str中的格式化控制:

            {}里面的格式如下:

     :[[fill]align][sign][width][,][.precision][type]

    :

            前面为空则默认按照format中参数的相对顺序进行,否则就是对应的序号。

    fill

            可选参数。表示未填充的地方所要填充的字符。

    align

            可选参数。

            < 内容左对齐

            > 内容右对齐(默认右对齐)

            ^ 内容居中对齐

    sign

            可选参数。

            + 在正数前添加正号,负数前加负号

            - 在正数前不变,负数前加负号

            空格 在正数前加空格,负数前加负号

    width

            可选参数。指定格式化后的字符串所占宽度。如果目标宽度比设定的大则无视

    ,

            可选参数。为数字添加千位分隔符。

    precision

            可选参数。指定小数位后的精度。如果是字符串,那么.后此数字代表从左起截取多少个字符

    type

            可选参数。指定格式化类型:

            整数常用格式化类型:

    b将10进制转化为2进制表示,然后格式化
    c10进制自动转化为对应的Unicode字符
    d10进制
    o10进制转化为8进制表示,然后格式化
    x10进制转化为16进制表示,然后格式化
    X10进制转化为16进制表示,然后格式化

            浮点型常用格式化类型:

    e转化为科学计数法表示,然后格式化
    E转化为科学计数法表示,然后格式化
    f转化为浮点型(默认保留小数点后6位)表示,然后格式化
    F转化为浮点型(默认保留小数点后6位)表示,然后格式化
    %输出浮点数的百分比形式

            下面举例使用:

            首先是填充按照什么顺序什么宽度排列,是否添加符号。(位置)[[fill]align][sign][width]

    1. print("{:*<+3}\n{:*< 3}".format(3, 23)) # 指定*填充,左对齐,使用+添加符号,占3格 指定*填充,左对齐,使用空格添加符号,占三格 默认format中参数相对顺序
    2. print("{1:*<+3}\n{0:*< 3}".format(3, 23)) # 指定format中参数顺序
    3. # 注意到上面的符号也是属于width占用格子数中

     

            然后就是千位分隔符、小数点后精度 、格式化类型 [,][.precision][type]

    三、字符串的操作符

            类似于C++中的operator,也就是运算符重载。Python中对字符串提供了一系列的字符串操作符,使字符串更加方便便捷的进行使用。

            下面利用a = "Hello", b = "world"进行举例说明:

    操作符描述例子
    +连接字符串a+b Helloworld
    *重复输出字符串a*2 HelloHello
    [i]切片操作。输出对应下标字符a[0] H
    [b:e]切片操作。输出对应[b, e)的子字符串a[1:4] ell
    in如果字符串包含指定内容,返回True"he" in a  False
    not in如果字符串不包含指定内容,返回True"He" not in a  False
    r/R返回转义字符的原始字符r'\n'=="\\n" 输出\n
    b返回二进制字符串。在字符的第一个引号前
    %格式化操作字符串

            简单代码进行举例说明:

    1. str1 = "Hello"
    2. print("He" in str1)
    3. print("eH" in str1)
    4. print("he" in str1)
    5. print("He" not in str1)
    6. a = b"abc"
    7. print(a)
    8. print(str1[0]) # H
    9. print(str1[0:2]) # He
    10. print(str1[0]*3) # HHH
    11. print(str1[0] + str1[1]) # He
    12. print("这个是换行符" + r'\n')

    四、字符串处理函数

             就像C++中对string自定义类型提供的许多成员函数那样,Python中也提供了许多对字符串类型进行操作的处理函数。下面我只是介绍一点点,详细的可以查阅文档哦~

            大小写转换函数

    lower()大写字符转换为小写字符
    upper()小写字符转换为大写字符
    capitalize()字符串第一个字符转换为大写
    swapcase()英文字符大小写互换

            字符串查找替换函数:(注意[]表示里面的参数可有可不有(类似于C++中的缺省参数))

    find(str[,start[,end]])检测str是否在对应调用字符串的[start, end)内存在,存在返回对应第一个字符的下标,不存在返回-1
    index(str[,start[,end]])同find功能,只不过找不到报异常
    rfind(str[,start[,end]])类似于find,只不过从后往前找,找不到返回-1
    rindex(str[,start[,end]])类似于rfind,只不过找不到报异常
    replace(old,new[,count])将被调用字符串中的old对应部分替换成new,如果包含count,则替换不超过count次
    1. str1 = "Hello"
    2. print(str1.find('o', 0, 4))
    3. # print(str1.index('o', 0, 4)) # 报异常
    4. print(str1.find('o', 0, 5)) # 证明范围为[)
    5. print(str1)
    6. str1 = str1.replace('l', 't', 1) # 把str1中的l替换为t,不超过1次 注意本身不会发生改变,所以需要拷贝赋值,方可展现结果
    7. print(str1)

            字符串判断函数:

    isalnum()至少包含一个字符,均为字母或者数字--返回True
    isalpha()至少包含一个字符,均为字母--返回True
    isdigit()字符串只包含数字,返回True
    islower()字符均为小写,返回True
    isnumeric只包含数字字符,返回True
    isspace()只包含空白,返回True
    isupper()字符均为大写,返回True
    isdecimal()字符串只包含十进制字符,返回True
    1. str1 = "ae"
    2. str2 = "Ae"
    3. print(str1.islower())
    4. print(str2.islower())
    5. str3 = "AS"
    6. str4 = "as"
    7. print(str3.isupper())
    8. print(str4.isupper())

            字符串头尾判断函数:

    startswith(str[,start[,end]])在被调用字符串的指定[start,end)范围内查看是否以str开头,是就返回True
    endswith(str[,start[,end]])在被调用字符串的指定[start,end)范围内查看是否以str结束,是就返回True

            字符串计算函数:

            无需调用字符串(即不需要str.函数,而是函数(str))

    len(str)返回字符串长度
    max(str)返回字符串中ASCII码值最大的字符
    min(str)返回字符串中ASCII码值最小的字符

            需要调用字符串

    count(str,[,start[,end]])在被调用字符串的[start,end)区域寻找str出现的次数

            字符串对齐函数:

    center(width[,fillchar])返回一个指定宽度为width居中的字符串,以fillchar字符填充没有的元素,默认为空格
    ljust(width[,fillchar])类似center,只不过进行左对齐
    rjust(width[,fillchar])类似于center,只不过右对齐
    1. str1 = "Yu"
    2. print(str1.center(4, '*'))
    3. print(str1)

             字符串拆分合并函数:

    split([sep, num])以sep为分隔符分隔被调用字符串,分割限制num个。默认为空格(返回的是一个列表)
    join(seq)以被调用字符串作为分隔符,将seq所有元素合并为一个新的字符串(返回一个字符串)
    1. str1 = "hello world 2022"
    2. print(str1.split(' ', 1)) # 以空格为分隔符,分割一个
    3. print(str1.split(' ')) # 以空格为分割符,不限制分割
    4. s = str1.split(' ') # 返回一个列表
    5. print(s[2])
    6. q = ' ' # 空格字符串
    7. print(q.join(s)) # 以空格为分割符连接s中所有元素
    8. str2 = q.join(s) # 返回一个字符串
    9. print(str2)

             删除字符串中空格函数:

    lstrip()删除字符串左边的空格
    rstrip()删除字符串右边的空格
    strip([chars])同时执行上面两个函数

            

    五、输入输出语句

            我们知道,在程序里面少不了的就是输入(Input)输出(Output)语句。目前针对于控制台的输入输出,比如C语言中的printf函数、scanf函数;C++中的cout、cin;Java中的System.out.print()、java.util.Scanner s = new java.util.Scanner(System.in) s.next()...那么在Python中我们常用的输入输出语句该如何去写呢?

    1.输入语句input()和转换语句eval()

    首先,常规的一个Python输入语句如下:

    tmp = eval(input("提示信息"))

            input函数会得到键盘输入的信息,并且将提示信息打印在控制台上。得到信息后,会返回字符串信息。如果此时不想得到字符串信息,而是更加具体的信息比如整型类型或者浮点型,那么就可以使用int()或者flaot()函数进行转换为对应类型,当然eval()函数会直接将输入的对象转换为适合的有效类型。

    1. num1 = eval(input())
    2. num2 = eval(input())
    3. print("{} + {} 的值为 {}".format(num1, num2, num1 + num2))

     

    2.输出语句print() 

            print()前面我们以及用的很多了,但是实际上它是有着4个参数的哦~

    print([obj1,...][,sep=' '][,end='\n'][,file=sys.stdout])

    所有参数均可省略,省略后出现一个空行

    obj:

            即输出的对象

    sep:

            输出对象的分隔符,默认为空格

    end:

            输出结尾符号,默认为\n

    file:

            输出到文件,默认到显示器(标准输出)

  • 相关阅读:
    举一反三刷穿字符串加减法类型题目:牛客BM86 大数加法、LeetCode-445. 两数相加 II、LeetCode-2. 两数相加
    windows系统 phpstudy 安装 imagick 扩展
    I350网卡烧录oprom,通过UEFI PXE引导方案
    吃货联盟订餐系统(用对象和数组来写的)
    arcgis插件 批量出图 按地块批量出图工具
    解决pycharm里import rospy报红线但是导入的系统环境有rospy的问题
    YOLO目标检测——口罩规范佩戴数据集+已标注xml和txt格式标签下载分享
    Mysql事务隔离级别是怎么实现的?
    【Git】Gitbash使用ssh 上传本地项目到github
    TC4056A 1A线性锂离子电池充电器芯片IC
  • 原文地址:https://blog.csdn.net/weixin_61508423/article/details/126417446