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


    一、
    字符串详解

    1、字符串特点

    • 字符串创建后不可修改;
    • 若要拼接或修改创建好的字符串都会造成重新生成字符串;
    • 只能进行加减运算
    • 字符串用单引号或双引号引起来,例如:"this is a String"  'this is a String'

    2、字符串常用功能

    需求描述 右列代码的解释 实现代码举例

    判断和转换字符串大小写


    包含常见字符; v = "heLlO"    x= v.lower()    print(x)
    包含常见字符;  v = "heLlO"    x= v.islower()    print(x)
    包含常见字符;  v = "heLlO"    x= v.upper()    print(x)
    包含常见字符;  v = "heLlO"    x= v.isupper()    print(x)

    查找字符串子序列的索引位置
    从开始往后找,找到第一个就获取其位置,并终止查找; v = "012312"  x = v.find('12')        print(x)
    从指定位置找,此功能的前边位置为开区间>=,后边位置为闭区间<; v = "012312"  y = v.find('12',4,6)   print(y)
    字符串拼接  

    a = "你好你好"  a = " ".join(a)  print(a)

    去除左右空格字符和不可见字符 备注:若括号内写字符,则移除指定字符,从最多开始匹配; a = "   hello   "  b = a.strip()   print(b)
    去除左空格字符和不可见字符 备注:若括号内写字符,则移除指定字符,从最多开始匹配; a = "   hello   "  b = a.lstrip()   print(b)
    去除右空格字符和不可见字符 备注:若括号内写字符,则移除指定字符,从最多开始匹配; a = "   hello   "  b = a.rstrip()   print(b)
    分隔信息,指定分隔段数,从左到右 备注:指定分隔符不显示 a = "abcdffodooodxxx"  b = a.split("d")   print(b)
    分隔信息,指定分隔段数,从右到左 备注:指定分隔符不显示 a = "abcdffodooodxxx"  b = a.rsplit("d")   print(b)
    字符串的替换 代码中的2指只替换前两个匹配字符,如果 不指第三个参数则全替换。 a = "hallohallohallo"  b = a.replace("a","e",2)
    获取字符串中的某一个字符   a = "hello"  b = a[3]    print(b)
    0>=范围<3     -1代表最后一位  -2代表倒数第二位; a = "hello"  b = a[0:3]    print(b)

    Python3中获取的是字符的个数

    Python2.7中获取的是字符的字节数

    Python3中获取的是字符的个数

    Python2.7中获取的是字符的字节数

    a = "hello"  b = len(a)    print(b)
    检查以什么开头  

    v = "heLlO"    y = v.startswith('h')   print(y) 

    检查以什么结尾  

    v = "heLlO"    y = v.endswith('O')   print(y) 

    一个个输出字符串的方法  a为变量名 

    test = "降龙十八掌"

    for a  in test:

      print(a)

    创建一个范围的数字

    0>=范围<100  5为设置的步长(默认步长则是连续的),

    范围如果从100到0,则步长需要时负数,比如是-1。

    注意:Python2.7中一次性创建范围内所有数字;而Python3则做了优化,

    只能通过for循环每次创建一个数字;

    如果要再Python2中也一个个创建,则需要使用xrange;

    a = range(0,100,5)

    for iterm in a:

      print(iterm)

    3、字符串不常用功能

    需求描述 右列代码的解释 实现代码举例
    首字母大写   v = "hello"     x = v.capitalize()    print(x)
    字母大写变小写 包含常见和不常见字符; v = "heLlO"    x = v.casefold()    print(x)
    设置宽度并将内容居中 20代表内容所占宽度,*位置只能用一个字符,不能是数字,但是可有可无;  v = "Hello"     x = v.center(20,"*")    print(v)  
    计算字符或子序列出现多少次 L位置要统计的字符或者子序列, 5,6代表要统计的始末位置;  v = "heLlO"    x = v.count("L",5,6)    print(x) 
    查找子序列的位置 index与find不同的是:find没找到显示-1,index查找不到会报错;  v = "01632"    x = v.index('9')       print(x)
    用户数据套用模板格式进行输出   test = "i am {name}",age(a)     i = test.format(name="tom",a=19)   print(i) 
      test = "i am {0}",age(1)         i = test.format("tom",19)         print(i)
      test = "i am {name}",age(a)   i = test.format_map({"name":"tom","a":19})    print(i)
    判断字符串中是否只是包含的字母和数字   test = "123abc"   v = test.isalnum()   print(v) 
    判断字符串中是否只是包含字母   test = "123abc"   v = test.isalpha()   print(v) 
    调整列宽为指定长度,常用语做表格  制表符  换行符 test = "123 abc cdd 123 abc cdd "   v = test.expandtabs(20)   print(v)
    判定输入的是否是数字 不支持识别特殊格式的数字  a = "123"  x = a.isdecimal()   print(x)
    判定输入的是否是数字 支持识别特殊格式的数字 a = "123"  x = a.isdigit()   print(x)
    判定输入的是否是数字 支持识别特殊格式的数字和中文数字 a = "123"  x = a.isnumeric()   print(x) 
    判断输出的内容是否有不可显示的字符   a = "123/t"  x= a.printable()   print(x) 
    判断是否全部都是空格   a = "     "  x= a.isspace()   print(x) 
    判断是否是标题    a = "Hello Word"  x= a.istitle()   print(x) 
    将非标题变成标题    a = "Hello word"  x= a.title()   print(x) 
    指定占用宽度并将内容居中  20为宽度,"*"为填充字符 a = "hello"  b = a.center(20,"*")   print(b)
    指定占用宽度并将内容居左  20为宽度,"*"为填充字符 a = "hello"  b = a.ljust(20,"*")   print(b)
    指定占用宽度并将内容居右  20为宽度,"*"为填充字符 a = "hello"  b = a.rjust(20,"*")   print(b)
    规避敏感信息  

    v1 = "不良言论" v2 = "****"    v3 = str.maketrans(v1,v2)

    a = "某人发表的不良言论"  b = a.translate(v3)   print(b)

    分隔信息,只能分隔三段; 从左到右 备注:指定分隔符显示  a = "abcdffodooodxxx"  b = a.partition("d")   print(b)
    分隔信息,只能分隔三段; 从右到左 备注:指定分隔符显示 a = "abcdffodooodxxx"  b = a.rpartition("d")   print(b)
    只能根据换行符分隔 参数解释:True显示/n,flase不显示换行符 a = "abcdf/nodoo/nodxxx"  b = a.rsplitlines(True)   print(b)
    大小写转换   a = "hello"  b = a.swapcase()   print(b)

    二、字符串拼接

    1、百分号字符串拼接

    1)举例:%s 可以接收任何值,%d只可以接收数字

    aaa = 'i am %s my hobby is %s' % ('xxx','yyy')
    aaa = 'i am %s my hobby is %s' % ('xxx',1)
    aaa = 'i am %s my hobby is %s' % ('xxx',[1,2])
    name = 'xxx'
    age = 33
    aaa = 'i am %s my hobby is %d' % (name,age)

    说明:%.3s中的.3的意思是 接收的数据长度为3位,不常用,知道即可;

      2)举例:%f用来拼接浮点数

    tpl = "percent %.2f" % 99.976236666666        #%.2f中的.2代表四舍五入保留小数点后两位长度的小数

    tpl = 'percent %.2f %%' % 99.9762366666666      #%% 代表打印%符号

    tpl = "i am %(name)s age %(age)d" % {"name": "aaa", "age": 18}    #使用字典传值

    msg='i am %(name)+60s my hobby is alex' %{'name':'lhf'}        

    msg='i am 33[43;1m%(name)+60s33[0m my hobby is alex' %{'name':'lhf'}    #拼接内容增加颜色

    print('root','x','0','0',sep=':')        #用指定符号来为字符串分隔

    3)%拼接理论知识

    %[(name)][flags][width].[precision]typecode

      • (name) 可选,用于选择指定的key
      • flags 可选,可供选择的值有:
        •   + 右对齐;正数前加正好,负数前加负号;
        •   - 左对齐;正数前无符号,负数前加负号;
        •   空格 右对齐;正数前加空格,负数前加负号;
        •   0 右对齐;正数前无符号,负数前加负号;用0填充空白处
      • width 可选,占有宽度
      • .precision 可选,小数点后保留的位数
      • typecode 必选
        • s,获取传入对象的__str__方法的返回值,并将其格式化到指定位置
        • r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置
        • c,整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置
        • o,将整数转换成 八 进制表示,并将其格式化到指定位置
        • x,将整数转换成十六进制表示,并将其格式化到指定位置
        • d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置
        • e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)
        • E,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E)
        • f, 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)
        • F,同上
        • g,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)
        • G,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;)
        • %,当字符串中存在格式化标志时,需要用 %%表示一个百分号

      注:Python中百分号格式化是不存在自动将整数转换成二进制表示的方式

    2、format字符串拼

      1)format拼接常用功能举例

    aabbc = "i am {}, age {}, {}".format("six", 18, 'tom')
    aabbc = "i am {}, age {}, {}".format(*["six", 18, 'tom'])
    aabbc = "i am {0}, age {1}, really {0}".format("six", 18)
    aabbc = "i am {0}, age {1}, really {0}".format(*["six", 18])
    aabbc = "i am {name}, age {age}, really {name}".format(name="six", age=18)
    aabbc = "i am {name}, age {age}, really {name}".format(**{"name": "six", "age": 18})
    aabbc = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33])
    aabbc = "i am {:s}, age {:d}, money {:f}".format("six", 18, 88888.1)
    aabbc = "i am {:s}, age {:d}".format(*["six", 18])
    aabbc = "i am {name:s}, age {age:d}".format(name="six", age=18)
    aabbc = "i am {name:s}, age {age:d}".format(**{"name": "six", "age": 18})
    aabbc = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2) 
    aabbc = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format(15)
    aabbc = "numbers: {num:b},{num:o},{num:d},{num:x},{num:X}, {num:%}".format(num=15)

    说明:#b代表二进制,o代表8进制,d代表证书,x代表十六进制小写,X代表十六进制大写,%代表转换为百分

    2)format理论知识

    [[fill]align][sign][#][0][width][,][.precision][type]

      • fill           【可选】空白处填充的字符
      • align        【可选】对齐方式(需配合width使用)
        • <,内容左对齐
        • >,内容右对齐(默认)
        • =,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
        • ^,内容居中
      • sign         【可选】有无符号数字
        • +,正号加正,负号加负;
        •  -,正号不变,负号加负;
        • 空格 ,正号空格,负号加负;
      • #            【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示
      • ,            【可选】为数字添加分隔符,如:1,000,000
      • width       【可选】格式化位所占宽度
      • .precision 【可选】小数位保留精度
      • type         【可选】格式化类型
        • 传入” 字符串类型 “的参数
          • s,格式化字符串类型数据
          • 空白,未指定类型,则默认是None,同s
        • 传入“ 整数类型 ”的参数
          • b,将10进制整数自动转换成2进制表示然后格式化
          • c,将10进制整数自动转换为其对应的unicode字符
          • d,十进制整数
          • o,将10进制整数自动转换成8进制表示然后格式化;
          • x,将10进制整数自动转换成16进制表示然后格式化(小写x)
          • X,将10进制整数自动转换成16进制表示然后格式化(大写X)
        • 传入“ 浮点型或小数类型 ”的参数
          • e, 转换为科学计数法(小写e)表示,然后格式化;
          • E, 转换为科学计数法(大写E)表示,然后格式化;
          • f , 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
          • F, 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
          • g, 自动在e和f中切换
          • G, 自动在E和F中切换
          • %,显示百分比(默认显示小数点后6位)
  • 相关阅读:
    LSMW TIPS
    Schedule agreement and Delfor
    Running VL10 in the background 13 Oct
    analyse idoc by creation date
    New Journey Prepare
    EDI error
    CBSN NEWS
    Listen and Write 18th Feb 2019
    Microsoft iSCSI Software Target 快照管理
    通过 Microsoft iSCSI Software Target 提供存储服务
  • 原文地址:https://www.cnblogs.com/wangzengyi/p/12054565.html
Copyright © 2011-2022 走看看