• 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位)
  • 相关阅读:
    Flexbox
    jquery.cropper 裁剪图片上传
    让Sublime Text3支持Less
    css实现图片垂直居中
    手淘适配-flexible
    CSSREM
    vue.js+boostrap最佳实践
    最好用的技术是最基础的
    响应式网页布局
    php基础入门
  • 原文地址:https://www.cnblogs.com/wangzengyi/p/12054565.html
Copyright © 2020-2023  润新知