Python字符串

创建

  • 使用单引号或双引号或三引号
  • string1 = new String(“abc”)

注意:三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。

转义字符

\ 反斜杠符号
’ 单引号
" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000 空
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数,yy代表的字符,例如:\o12代表换行
\xyy 十六进制数,yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出

操作符

假设:str1 = “123”,str2=“abcdef”

  • 字符串连接
str1 + str2

‘123abcdef’

  • 重复输出字符串
str1 * 2

‘123123’

  • [ ]通过索引获取字符串中字符
str1[1]

‘23’

  • [ : ]截取字符串中的一部分
str1[1:4]

‘bcd’

  • in 成员运算符 - 如果字符串中包含给定的字符返回 True
"A" in str2

False

  • not in 成员运算符 - 如果字符串中不包含给定的字符返回 True
"d" not in str2

True

内建函数

  • string.capitalize()
    把字符串的第一个字符大写

  • string.center(width)
    返回以长度宽度为width,字符串在中心的字符串。填充使用指定的填充字符完成(默认为空格) ,如果width小于字符串的长度,则不截位,打印完整的字符串。
    Eg:

    String = “商品列表”
    Print(String.center(19,”-”))
    注解:”商品列表”占4位,使用center函数补充到19位,”商品列表”在中心,左右两边用”-”补充,因为19是单数,字符串“商品列表”为双数占4位,剩余15位,左边8位,右边7位

  • string.count(str, beg=0, end=len(string))
    返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数

  • string.decode(encoding=‘UTF-8’, errors=‘strict’)
    以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 ‘ignore’ 或 者’replace’

  • string.encode(encoding=‘UTF-8’, errors=‘strict’)
    以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’

  • string.endswith(obj, beg=0, end=len(string))
    检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.

  • string.expandtabs(tabsize=8)
    把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。

  • string.find(str, beg=0, end=len(string))
    检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1

  • string.format()
    格式化字符串**(详细见补充)**

  • string.index(str, beg=0, end=len(string))
    跟find()方法一样,只不过如果str不在 string中会报一个异常.

  • string.isalnum()
    如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False

  • string.isalpha()
    如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False

  • string.isdecimal()
    如果 string 只包含十进制数字则返回 True 否则返回 False.

  • string.isdigit()
    如果 string 只包含数字则返回 True 否则返回 False.

  • string.islower()
    如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False

  • string.isnumeric()
    如果 string 中只包含数字字符,则返回 True,否则返回 False

  • string.isspace()
    如果 string 中只包含空格,则返回 True,否则返回 False.

  • string.istitle()
    如果 string 是标题化的(见 title())则返回 True,否则返回 False

  • strig.isupper()
    如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False

  • string.join(seq)
    以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

  • string.ljust(width)
    返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串

  • string.lower()
    转换 string 中所有大写字符为小写.

  • string.lstrip()
    截掉 string 左边的空格

  • max(str)
    返回字符串 str 中最大的字母。

  • min(str)
    返回字符串 str 中最小的字母。

  • string.replace(str1, str2, num=string.count)
    把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.

  • string.rfind(str, beg=0,end=len(string) )
    类似于 find()函数,不过是从右边开始查找.

  • string.rindex( str, beg=0,end=len(string))
    类似于 index(),不过是从右边开始.

  • string.rjust(width)
    返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串

  • string.rstrip()
    删除 string 字符串末尾的空格.

  • string.split(str="", num=string.count(str))
    以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串。唯一返回值是一个列表(如果裁剪的对象不存在字符串中,则只把字符串转换成列表)

  • string.startswith(obj, beg=0,end=len(string))
    检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.

  • string.strip([obj])
    在 string 上执行 lstrip()和 rstrip()

  • string.swapcase()
    翻转 string 中的大小写

  • string.title()
    返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())

  • string.upper()
    转换 string 中的小写字母为大写

  • string.zfill(width)
    返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0

案例及补充

  1. \r使用

    在这里插入图片描述
    实行结果:123
    注解:\r:将光标重新换到一开始,继续打印

  2. 字符串格式化符号 %f 可指定小数点后的精度。
    在这里插入图片描述
    实行结果:19.13

  3. %g 是自动选择输出格式的,在六位数的情况下就会以科学计数法方式输出,用于打印数据时,会去掉多余的零,至多保留六位有效数字。

  4. 使用格式化符号进行进制转换
    在这里插入图片描述
    实行结果:
    十六进制:0xa
    二进制: 0b1010
    八进制:0o12
    上面使用格式化符号进行进制转换中,多加入了一个#号,目的是在转换结果头部显示当前进制类型,如不需要,可将#号去除

  5. 字符串的分割还有partition()这种方式
    partition(sep) --> (head,sep,tail)
    含义:从左向右遇到分隔符把字符串分割成两部分,返回头、分割符、尾三部分的三元组。如果没有找到分割符,就返回头、尾两个空元素的三元组。
    Eg:
    在这里插入图片描述
    实行结果:
    I’m a good sutdent.
    ("I’m a ", ‘good’, ’ sutdent.’)
    (“I’m a good sutdent.”, ‘’, ‘’)

  6. 针对 Counter 的升级使用
    #必须引用如下库

 from collections import Counter

Counter (string):以字典的形式,输出每个字符串中出现的字符及其数量

  1. isdigit和isnumeric的区别
    isdigit判断只包含数字,isnumeric判断只包含数字字符
    isdigit()
    True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
    False: 汉字数字
    Error: 无

    isdecimal()
    True: Unicode数字,,全角数字(双字节)
    False: 罗马数字,汉字数字
    Error: byte数字(单字节)

    isnumeric()
    True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
    False: 无
    Error: byte数字(单字节)

  2. zip’函数
    函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

    a = [1,2,3] 
    b = [4,5,6]
    c = [4,5,6,7,8] 
    zipped = zip(a,b) # 打包为元组的列表 
    zip(a,c) # 元素个数与最短的列表一致 
    zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式 
    

    实行结果:
    [(1, 4), (2, 5), (3, 6)]
    [(1, 4), (2, 5), (3, 6)]
    [(1, 2, 3), (4, 5, 6)]

  3. zfill(), 它会在数字的左边填充 0.

    '12'.zfill(5)
    

    实行结果:
    ‘00012’

  4. 字符串的format运用
    字符串类型格式化采用format()方法,基本使用格式是:
    <模板字符串>.format(<逗号分隔的参数>)
    调用format()方法后会返回一个新的字符串,参数从0 开始编号。

    1.占位符

    "{}:计算机{}的CPU 占用率为{}%。".format("2016-12-31","PYTHON",10)
    

    实行结果:
    ‘2016-12-31:计算机PYTHON的CPU 占用率为10%。’

    "{}{}{}".format("圆周率是",3.1415926,"...")
    "圆周率{{{1}{2}}}是{0}".format("无理数",3.1415926,"...")
    

    实行结果:
    Out[11]: ‘圆周率是3.1415926…’
    Out[12]: ‘圆周率{3.1415926…}是无理数’

    s="圆周率{{{1}{2}}}是{0}" #大括号本身是字符串的一部分
    s.format("无理数",3.1415926,"...") #当调用format()时解析大括号
    

    实行结果: ‘圆周率{3.1415926…}是无理数’

    2.格式控制信息
    format()方法中<模板字符串>的槽除了包括参数序号,还可以包括格式控制信息。此时,槽的内部样式如下:
    {<参数序号>: <格式控制标记>}
    其中,<格式控制标记>用来控制参数显示时的格式,包括:<填充><对齐><宽度>,<.精度><类型>6 个字段,这些字段都是 可选的,可以组合使用,逐一介绍如下。
    <宽度>
    指当前槽的设定输出字符宽度,如果该槽对应的format()参数长度比<宽度>设定值大,则使用参数实际长度。如果该值的实际位数小于指定宽度,则位数将被默认以空格字符补充。
    <对齐>
    指参数在<宽度>内输出时的对齐方式,分别使用<、>和^三个符号表示左对齐、右对齐和居中对齐。
    <填充>
    指<宽度>内除了参数外
    的字符采用什么方式表示,默认采用空格,可以通过<填充>更换。

    s = "PYTHON" 
    "{0:30}".format(s)
    
    "{0:>30}".format(s)
    
    "{0:*^30}".format(s)
    
    "{0:-^30}".format(s)
    
    "{0:3}".format(s)
    
    
    

    Out[17]: ‘PYTHON ’
    Out[18]: ’ PYTHON’
    Out[19]: ***********PYTHON(和左边一样数量的星号)
    Out[20]: ‘------------PYTHON------------’
    Out[21]: ‘PYTHON’

    逗号(,)
    <格式控制标记>中逗号(,)用于显示数字的千位分隔符。

    {0:-^20,}".format(1234567890)
    "{0:-^20}".format(1234567890) #对比输出
    "{0:-^20,}".format(12345.67890)
    

    实行结果:
    ‘—1,234,567,890----’
    ‘-----1234567890-----’
    ‘----12,345.6789-----’
    精度
    表示两个含义,由小数点(.)开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度。

    "{0:.2f}".format(12345.67890)
    "{0:H^20.3f}".format(12345.67890)
    "{0:.4}".format("PYTHON")
    

    实行结果:
    ‘12345.68’
    ‘HHHHH12345.679HHHHHH’
    ‘PYTH’
    <类型>
    1.表示输出整数和浮点数类型的格式规则。对于整数类型,输出格式包括6 种:
    • b: 输出整数的二进制方式;
    • c: 输出整数对应的 Unicode 字符;
    • d: 输出整数的十进制方式;
    • o: 输出整数的八进制方式;
    • x: 输出整数的小写十六进制方式;
    • X: 输出整数的大写十六进制方式;

    "{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)
    

    实行结果:
    Out[32]: ‘110101001,Ʃ,425,651,1a9,1A9’
    2.对于浮点数类型,输出格式包括4 种:
    • e: 输出浮点数对应的小写字母 e 的指数形式;
    • E: 输出浮点数对应的大写字母 E 的指数形式;
    • f: 输出浮点数的标准浮点形式;
    • %: 输出浮点数的百分形式。
    浮点数输出时尽量使用<.精度>表示小数部分的宽度,有助于更好控制输出格式。

    "{0:e},{0:E},{0:f},{0:%}".format(3.14)
    "{0:.2e},{0:.2E},{0:.2f},{0:.2%}".format(3.14)
    

    实行结果:
    Out[33]: ‘3.140000e+00,3.140000E+00,3.140000,314.000000%’
    Out[34]: ‘3.14e+00,3.14E+00,3.14,314.00%’

    print('{0:20}'.format(2))
    print('{0:20}'.format("2")
    实行结果:
                       2
    2                   
    print("{:.0%}".format(0.12))
    实行结果: 12%
    
  5. exit()的用法
    1.sys.exit(n) 退出程序引发SystemExit异常,可以捕获异常执行些清理工作。n默认值为0,表示正常退出,其他都是非正常退出。还可以sys.exit(“sorry, goodbye!”); 一般主程序中使用此退出。

    2.os._exit(n), 直接退出, 不抛异常, 不执行相关清理工作。常用在子进程的退出。

    3.exit()/quit(),跑出SystemExit异常。一般在交互式shell中退出时使用。

    4.exit(0) 有什么功能?
    在很多类型的操作系统里,exit(0) 可以中断某个程序,而其中的数字参数则用来表示程序是否是碰到错误而中断。exit(1) 表示发生了错误,而 exit(0) 则表示程序是正常退出的。这和我们学的布尔逻辑 0==False 正好相反,不过你可以用不一样的数字表示不同的错误结果。比如你可以用exit(100) 来表示另一种和 exit(2)或 exit(1) 不同的错误。

  6. 尽量使用join()链接字符串,因为’+’号连接n个字符串需要申请n-1次内存,使用join()需要申请1次内存。

  7. 固定长度分割字符串

    import re
    s = '1234567890'
    a = re.findall(r'.{1,3}',s)
    print(a)
    

    实行结果:
    [‘123’, ‘456’, ‘789’, ‘0’]
    语法解释:’.’任意字符
    ‘1,3’匹配前一个字符,1-3次
    Re.findall 按照模式进行寻找,找到的情况下返回列表类型

  8. maketrans() 和 translate()
    maketrans()
    功能:制作用于字符串替换的映射表
    格式: 字符串.maketrans(‘查找字符’,‘替换字符’) 两个字符必须长度相等
    返回值:字典

    translate
    功能:进行字符串替换操作
    格式:字符串.translate(映射表)
    返回值:替换之后的字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值