zoukankan      html  css  js  c++  java
  • Python 字符串

    1. 字符串了解

    字符串最大用途是 设置其他值的格式,来完成拆分,合并,和查找等功能

    1.1 字符串的基本操作

    相对列表和元组而言,切片/索引/乘法/成员资格.长度.最小值.最大值均可用于字符串.

    str1 = "你好,2018年,ai 中国"
    str2 = max(str1)                         # 最大字符
    print(str2)
    print(type(str2))
    print("*****完美分割线1******
    ")
    str2 = min(str1)                         # 最小字符,此次最小为空格符号
    print(str2)
    print(type(str2))
    print("*****完美分割线2******
    ")
    str2 = len(str1)                         # 长度计算:计算结果为整数
    print(str2)
    print(type(str2))
    print("*****完美分割线3******
    ")
    str2 = str1 * 2                         # 字符串 乘法:乘法结果并无空格
    print(str2)
    print(type(str2))
    print("*****完美分割线4******
    ")
    str2 = str1 + str1                         # 字符串 相加: 相加结果中并无空格
    print(str2)
    print(type(str2))
    print("*****完美分割线5******
    ")
    str2 = str1[0]                         # 索引动作:单个子元素位置索引
    print(str2)
    print(type(str2))
    print("*****完美分割线6******
    ")
    str2 = str1[2:4]                         # 索引动作:子元素位置自2开始,至3结束
    print(str2)
    print(type(str2))
    print("*****完美分割线7******
    ")
    str2 = str1[::2]                         # 索引动作:子元素位置自2开始,至3结束
    print(str2)
    print(type(str2))
    print("*****完美分割线8******
    ")
    str2 = "你好"                        # 成员资格 in : 返回True 或者Flase
    print(str2 in str1)
    print(type(str2 in str1))
    print("*****完美分割线9******
    ")
    str2 = "你好,2018年,ai 中国"
    print(str2 == str1)                    # 比较运算符 字符串支持
    print(type(str2 in str1))
    print("*****完美分割线10******
    ")
    lst1 = ["你好","2018年","ai","中国"]
    lst2 = ["你好","2018年","ai","中国"]
    print(lst2 == lst1)                    # 比较运算符 字符串支持
    print(type(lst2 in lst1))
    lst3 = lst1[0]                         # 索引返回的是 ,与当前子元素的格式一样
    print(lst3)
    print(type(lst3))
    print("*****完美分割线11******
    ")
    str1 = "你好","2018年","ai","中国"  # 此为元组
    print(str1)
    print(type(str1))


    效果如下:
    <class 'str'>
    *****完美分割线1******
    
    
    <class 'str'>
    *****完美分割线2******
    
    14
    <class 'int'>
    *****完美分割线3******
    
    你好,2018年,ai 中国你好,2018年,ai 中国
    <class 'str'>
    *****完美分割线4******
    
    你好,2018年,ai 中国你好,2018年,ai 中国
    <class 'str'>
    *****完美分割线5******<class 'str'>
    *****完美分割线6******
    
    ,2
    <class 'str'>
    *****完美分割线7******
    
    你,08,i中
    <class 'str'>
    *****完美分割线8******
    
    True
    <class 'bool'>
    *****完美分割线9******
    
    True
    <class 'bool'>
    *****完美分割线10******
    
    True
    <class 'bool'>
    你好
    <class 'str'>
    *****完美分割线11******
    
    ('你好', '2018年', 'ai', '中国')
    <class 'tuple'>


    2.字符串的格式

    字符串的格式,是调用字符串方法 format 实现字符串指定位置的赋值,

    字符串 str = "   ", 而格式字符串为 str = " {   }". format()   或者  " {   }  {   }  {   } " . format() 

           或 str = " {{                }}" . format (      ).这取决于你希望结果中是否包含{},但{} 内 不可以有空格

            区分            赋值替换的位置        赋的值

    替换字段包含以下信息

    字段名   : 索引 或标识符 ,指出设置哪个值的格式,并使用结果 来替换字段,也可以指定特定值的特定部分,如列表元素


    str1 = "{a} {b} {c} {d}"
    print(str1.format(a=1, b=2, c=3, d=4))     #最简单情况下,只需向format()函数提供要设置其格式的未命名参数,并在格式字符串中,使用未命名字段.此时将按顺序将字段和参数配对.
    print("*****完美分割线1******
    ")
    str2 = "{a}{}".format(2,a = 1)      #使用未命名字段.此时将按顺序将字段和参数配对,你也可以给参数指定名称,这种参数将用于对于的替换字段中,也可以混合使用.
    print(str2)
    print(type(str2))
    print(str2[1])
    print(type(str2[1]))                   #格式为字符串.
    print("*****完美分割线2******
    ")
    str3 = "{0}{a}".format(2,a = 1)       #格式为字符串.
    print(str3)
    print(type(str3))
    print(type(str3[0]))                   #格式为字符串.

    效果如下

    1 2 3 4
    *****完美分割线1******
    
    12
    <class 'str'>
    2
    <class 'str'>
    *****完美分割线2******
    
    21
    <class 'str'>
    <class 'str'>


    转换标志 : 跟在! 感叹号后面的部分.当前支持的字符包含 r (repr)   s (str)  a(ascii) ,如果你指定了转换标志,将不适用对象的本身的格式设置机制,而是使用指定函数的将                      对象转换为字符串,再做进一步设置.

    print("*****完美分割线3******
    ")
    lst1 = ["China", "American", "Russia", "European Union"]
    str4 = "{}{}{}"
    str5 = "{}{}{}".format(lst1,lst1,lst1) # 参数可为字符串或列表
    print(lst1)
    print(str4)
    print(str5)
    print(type(str5))
    print("*****完美分割线4******
    ")
    lst2 = ["China", "American", "Russia", "European Union"]
    str6 = "I LOVE {}".format(lst2[0])
    str7 = "they {country}".format(country = lst2)
    str7 = "I Regret {country[1]}".format(country = lst2)# 参数可为列表具体的元素
    print(lst2)
    print(str6)
    print(type(str6))
    print(str7)
    print(type(str7))
    print(len(str7))


    效果如下:
    *****完美分割线3******
    
    ['China', 'American', 'Russia', 'European Union']
    {}{}{}
    ['China', 'American', 'Russia', 'European Union']['China', 'American', 'Russia', 'European Union']['China', 'American', 'Russia', 'European Union']
    <class 'str'>
    *****完美分割线4******
    
    ['China', 'American', 'Russia', 'European Union']
    I LOVE China
    <class 'str'>
    I Regret American
    <class 'str'>
    17


    格式说明符 :跟在冒号后面的表达式,格式说明符 让我们能够详细的指定最终的格式,包含 格式类型(如 字符串 浮点数 或者十六进制),字段宽度和数的精度. 以及各种对齐方式 填充方式  或者如何显示百分位和千分位。

    完成替换字段名后,可以设置参数的格式,首先我们尝试使用一个转换标志! 感叹号和r s a的使用,看下效果

    str8 = "{i!r}  ,  {i!s}  ,  {i!a}".format(i = "π")# 转换标志 ! 感叹号
    print(str8)
    str9 = "{0}  ,  {0}  ,  {0}".format( "π")          # 无转换标志符
    print(str9)
    str9 = "{0}  ,  {0}  ,  {0}".format( "π")          # 无转换标志符
    print(str9)
    str10 = "this number is {pi:f}".format(pi = 3.14)          # 无转换标志符,f默认6位小数
    print(str10)

    效果如下:


    'π' , π , 'u03c0'
    
    π , π , π
    π , π , π
    this number is 3.140000


    宽度/精度/千位分隔符

    # 符号对齐 与用字符填充
    #通常为了打印整齐的表格,对于负数符号,需要采用对齐,此处包含以下方式
    #在指定的宽度/精度前面加上一个标志 0(填充0),加好+ (填充加好) 减号(填充-) 或者空格( ).
    str18 = "{:010.2f}".format(3.1415926)                  # 冒号后第一位0,表示填充0
    print(str18)
    str18 = "{:+10.2f}".format(3.1415926)                  # 冒号后第一位+,表示填充1个加
    print(str18)
    str18 = "{:-10.2f}".format(3.1415926)                  # 冒号后第一位-,未填充上
    print(str18)
    print("*****完美分割线12******
    ")
    str18 = "{:<010.2f}".format(3.1415926)                  # 冒号后第一位<,表示左对齐
    print(str18)
    str18 = "{:>+10.2f}".format(3.1415926)                  # 冒号后第一位<,表示右对齐
    print(str18)
    str18 = "{:^-10.2f}".format(3.1415926)                  # 冒号后第一位^,表示居中
    print(str18)
    print("*****完美分割线13******
    ")
    str18 = "{:#<010.2f}".format(3.1415926)                  # 冒号后第一位#,表示左对齐,其他补充#
    print(str18)
    str18 = "{:#>+10.2f}".format(3.1415926)                  # 冒号后第一位#,表示右对齐,其他补充#
    print(str18)
    str18 = "{:#^-10.2f}".format(3.1415926)                  # 冒号后第一位#,表示居中,其他补充#
    print(str18)
    str18 = "{:=10.2f}".format(-3.1415926)                  # 冒号后第一位=,符号位与参数之间 填充 空格
    print(str18)
    str18 = "{:#=10.2f}".format(-3.1415926)                  # 冒号后第一位#=,符号位与参数之间 填充 #
    print(str18)
    str18 = "{:$=10.2f}".format(-3.1415926)                  # 冒号后第一位$=,符号位与参数之间 填充 $
    print(str18)
    print("*****完美分割线14******
    ")
    str18 = "{:-.2}".format(3.1415926)                  # 冒号后第一位 无,显示2位,对齐
    print(str18)
    print(len(str18))
    str18 = "{:.2}".format(3.1415926)                  # 冒号后第一位 无
    print(str18)
    print(len(str18))
    str18 = "{: .2}".format(3.1415926)                  # 冒号后第一位 空格,以便与下面对齐
    print(str18)
    print(len(str18))
    str18 = "{:+.2}".format(3.1415926)                  # 冒号后第一位 加号 ,以便与下面对齐
    print(str18)
    print(len(str18))
    str18 = "{:.2}".format(-3.1415926)                  # 冒号后第一位无,参数有负值,方便与上文对齐
    print(str18)
    print(len(str18))

    效果如下:

    0000003.14
     +3.14
     3.14
    *****完美分割线12******
    
    3.14000000
     +3.14
     3.14 
    *****完美分割线13******
    
    3.14######
    #####+3.14
    ###3.14###
    - 3.14
    -#####3.14
    -$$$$$3.14
    *****完美分割线14******
    
    3.1
    3
    3.1
    3
     3.1
    4
    +3.1
    4
    -3.1
    4



    3.字符串的方法


    常见的string 模块中的常量方法

    import string
    print(string.digits)                                   # 打印 0-9 字符串
    print(string.ascii_letters)                            # 打印 所有大小写字母
    print(string.ascii_lowercase)                            # 打印 小学字母
    print(string.printable)                            # 打印 所有可打印的 ascii字符
    print(string.punctuation)                            # 打印 所有可打印的 ascii标点字符
    print(string.ascii_uppercase)                          #打印所有 大写字母


    center

    find

    join

    lower

    replace

    split

    strip

    translate

    print("*****完美分割线21******
    ")
    tuple1 = str.maketrans("cs", "kz")  # translare 方法启用前,需要创建一个对换表,类似于获取 unicode码
    print(tuple1)
    str29 = "this is an incredible test"
    print(str29.translate(tuple1))
    tuple1 = str.maketrans("cs", "kz", " ")  # translare 方法 可在后方添加替换其他字符,比如空格
    str29 = "this is an incredible test"
    print(str29.translate(tuple1))
    print("*****完美分割线21******
    ")
    import string
    str30 = "this is an incredible test"
    str31 = str30.isalnum()               # Python isalnum() 方法检测字符串是否由字母和数字组成
    print(str31)
    str31 = str30.isalpha()               # Python isalpha() 方法检测字符串是否只由字母组成
    print(str31)
    str31 = str30.isdecimal()               # Python isdecimal() 方法检查字符串是否只包含十进制字符
    print(str31)
    str31 = str30.isdigit()               # Python isdigit() 方法检测字符串是否只由数字组成
    print(str31)
    str31 = str30.isidentifier()               #isidentifier 是否满足标识符定义规则 标识符定义规则为:只能是字母或下划线开头、不能包含除数字、字母和下划线以外的任意字符。
    print(str31)
    str31 = str30.islower()               #islower) 方法检测字符串中所有的字母是否都为小写
    print(str31)
    str31 = str30.isnumeric()               #isnumeric() 方法检测字符串是否只由数字组成
    print(str31)
    str31 = str30.isprintable()               # isprintable() 判断是否为可打印字符串,例如制表符、换行符就不是可打印字符,但空格是
    print(str31)
    str31 = str30.isspace()               # isspace() 方法检测字符串是否只由空白字符组成
    print(str31)
    str31 = str30.isupper()               # isupper() 方法检测字符串中所有的字母是否都为大写
    print(str31)
    str31 = str30.istitle()              # istitle()  检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写
    print(str31)


    效果如下:
    China, Spain to enhance partnership,Spain 
    ****China, Spain to enhance partnership,Spain*****
    *****完美分割线15******
    
    7
    7
    36
    36
    *****完美分割线16******
    
    1+2+3+4+5
    12345
    *****完美分割线17******
    
    china, spain to enhance partnership,spain
    China, Spain To Enhance Partnership,Spain
    China, Spain To Enhance Partnership,spain
    *****完美分割线18******
    
    China, Spain both enhance to partnership,Spain
    *****完美分割线19******
    
    ['China, Spain to enhance partnership,Spain']
    ['1', '2', '3', '4', '5']
    *****完美分割线20******
    
    ***China, Spain to  *** enhance partnership,Spain!!!!
     ***China, Spain to *** enhance partnership,Spain!!!! 
    China, Spain to *** enhance partnership,Spain
    *****完美分割线21******
    
    {115: 122, 99: 107}
    thiz iz an inkredible tezt
    thizizaninkredibletezt
    *****完美分割线21******
    
    False
    
    False
    False
    False
    False
    True
    False
    True
    False
    False
    False
  • 相关阅读:
    mmap 函数
    poisx 文件锁
    三次握手的第三个ACK包丢了,TCP的处理方式
    unix 网络编程第八章 UDP
    STDIN_FILENO vs stdin
    unix 网络编程 第七章
    select 实现分析,poll epoll
    pselect 和 select
    export LANG="zh_CN.UTF-8"
    Unix 网络编程 I/O 模型 第六章
  • 原文地址:https://www.cnblogs.com/rango0550/p/10158538.html
Copyright © 2011-2022 走看看