zoukankan      html  css  js  c++  java
  • python的字符串

    字符串

    在python中,有这样一些类型,它们的成员是有序排列的,并且可以通过下标访问成员,这些类型称之为有序序列,包括:列表、range、元组和字符串;其中列表的成员可修改,属于可变序列,字符串和元组,成员不可修改,属于不可变序列。序列有共同操作:

    • 成员关系运算(in,not in)
    • 连接操作(+)
    • 重复操作(*)
    • 切片操作([::])

    1.字符串定义

    字符串就是由若干个不同的unicode字符组成的不可变有序序列

    #单引号字符串
    str1 = '天要下雨,娘要嫁人,由他去吧'
    str2 = str()  #空串
    str3 = str([10,20,30])
    
    #双引号字符串
    str2 = "天要下雨,娘要嫁人,由他去吧"
    
    #三引号字符串 多行字符串
    str3 = '''
    好雨知时节
    当春乃发生
    '''
    str4 = """
    随风潜入夜
    润物细无声
    ""
    

    2.获取字符

    因为是不可变序列,所以不能修改单个字符;凡是修改字符串的操作都产生新串

    字符串中的元素分别被编了号,这些编号被称为索引【下标,角标】
    	 字符串索引: 
    		        从左向右开始编号:0,1,2....n-1
                     从右向左编号:  -1,-2......
                      -5 -4 -3 -2 -1
                      "h  e  l  l  o"
                       0  1  2  3  4  
    
    str1 = '天要下雨,娘要嫁人,由他去吧'
    print(str1[0],str1[-1]) #天 吧
    
    • 字符串遍历

    字符串的遍历就是访问字符串的每一个字符,可以使用while循环和for-in循环。经常使用for-in循环遍历字符串

    for-in语法:

    for 变量名 in 字符串:
         语句块A
    else:
          语句块B
    

    说明:主要用于遍历序列【遍历:依次访问序列中的每一个元素,获取元素值】

    工作原理:按照顺序获取列表中的每个元素,赋值给变量,再执行语句块A,以此类推,直到列表中的元素全部获取为止,循环终止后执行else语句块B。

    for ch in 'hello world':
    	print(ch)
    

    3.字符串转义

    • 常见转义字符
      转移字符 说明 转移字符 说明
      ' 单引号 " 双引号
      换行 回车
      tab
    • 原生字符
      如果在字符串中不把当做转移字符,可以使用
      str1 = r'c:wh1803course1'
      print(str1) #c:wh1803course1

    4.序列通用操作

    #1 字符串拼接
    #对于字符串字面值,只要相邻两个字符串中间没有其他字符就会自动拼接为一个字符串
    str1 = '中美达成共识'
            '不打贸易战'
    print(str1) #中美达成共识不打贸易战
    
    #其他情况使用+运算符拼接字符串
    str1 = '你好'
    str2 = ' 树先生'
    print(str1 + '世界')
    print(str1 + str2)
    
    #2.字符串重复
    str1 = '汪' * 3
    print(str1) #汪汪汪
    
    #3.成员操作
    str1 = '天要下雨,娘要嫁人,由他去吧'
    if '天' in str1:
        print('是成员')
    else:
        print('不是成员')
    
    #4.字符串截取(切片)
    #语法:字符串[开始下标:结束下标:步长],表示按指定步长获取从开始下标到结束下标之间的元素,
    #     结果为一个新的字符串
    #注意:包头不包尾【前闭后开区间】   [开始下标,结束下标)
    #步长:默认是1,正数表示从左向右取,负数表示从右向左取
    str1 = '123456'
    print(str1[0:2]) #'12'  从下标0取到下标1
    print(str1[1:]) #'23456' 从下标为1的元素渠道末尾
    print(str1[::2]) #'135' 隔一个取一个
    print(str1[:]) #'123456' 从头取到尾,取所有字符
    print(str1[::-1]) #'654321' 从右向左去
    print(str1[-3::-1]) #4321 从右边下标为-3的字符向左取所有字符,
    
    #5.字符串长度
    print(len(str1))
    

    5 字符串常用函数

    5.1 字符串查找和替换

    str1 = 'a fox jumped over the fence'

    方法名 说明 示例
    str.count(sub,start=0,end=len(string)) 查找子串sub出现的次数;start从指定下标开始查,end结束下标 str1.count('f')
    str.find(str, beg=0, end=len(string)) 从左向右检测字符串中是否包含子字符串 str,如果包含返回下标,否则返回-1。beg和end是可选参数,指定查找范围 str1.find('fox')
    str.rfind(sub[, start[, end]]) 从右向左检测字符串中是否包含sub子串,包含返回子串的下标,否则返回-1 str1.rfind('fox')
    str.index(sub[, start[, end]]) 作用类似find,但子串sub不存在会报错ValueError str1.index('fox')
    str.rindex(sub[, start[, end]]) 从右向左检测,类似rfind,会报ValueError str1.rindex('fox')
    str.replace(old, new[, count]) 返回一个新字符串,原串中的old被替换为new,可选参数count指定替换次数。 str1.replace('a','many')

    5.2 字符串分隔和组合

    方法名 说明 示例
    str.split([sep[, num=count(sep)]]) 将字符串拆分为以sep为分隔符的列表,如果指定num,则最多拆分num次 str1.split(' ')
    str.rsplit([sep[, num=count(sep)]]) 从右向左拆分
    str.partition(seq) 将字符串拆分为一个有三个元素的元组(seq前的字符串,seq,seq后的字符串)。
    str.rpartion(seq) 同上
    str.splitlines([keepends]) 拆分一个包含多行的字符串,以每行为一个元素返回一个列表。keepends是一个True字符或非零整数,表示保留行尾标志(即换行符)
    str.join(seq) 以指定字符串str作为分隔符,将seq对象中所有的元素(字符串表示)合并为一个新的字符串;seq可以是字符串、列表等

    5.3 字符串判断

    方法 说明 示例
    str.isalpha() 判断字符串是否由字母构成并且只包含字母,是返回True,否返回False str1.isalpha()
    str.isalnum() 检测字符串是否由字母和数字组成,如果都是数字或字母返回True,否则返回False
    str.isdigit() 检测字符串是否由数字构成,可检测byte类型
    str.isdecimal() 检测字符串是否由数字构成
    str.isnumeric() 检测字符串是否由数字构成, 可以检测汉字数字:十
    str.isspace() 检测字符串是否只有空格或tab构成
    str.islower() 检测字符串中的字母字符是否全部由小写字母组成
    str.isupper() 检测字符串中的字母字符是否全部由大写写字母组成
    str.startswith(suffix[, start[, end]]) 用于判断字符串是否以指定子字符串开头,如果是则返回True,否则返回False。
    str.endswith(suffix[, start[, end]]) 用于判断字符串是否以指定子字符串 结尾,如果是则返回True,否则返回False。

    5.4 字符串转换(产生新的字符串)

    方法 说明 示例
    str.lower() 字符串转小写
    str.upper() 字符串转大写
    str.swapcase() 把字符串中的大小写字母互换,大写转换成小写,小写转换成大写。不去管非字母类字符。
    str.capitalize() 将字符串的第一个字符转换为大写, 其余转换为小写
    str.title() 字符串中每个单词的首字母大写,其余小写。
    str.lstrip([chars]) 去除字符串左边指定的字符,默认是去除空格
    str.rstrip([chars]) 去除字符串左边指定的字符,默认是去除空格
    str.strip([chars]) 去除字符串两边边指定的字符,默认是去除空格

    6. 字符串格式化

    • 用%格式化
      %[flags][width][.precision]typecode
      flags:对其方式,-左对齐 +右对齐(默认),0表示用0填充(只针对数值型),默认是用空格填充
      width:所占宽度,单位是列
      .precision: 精度,如果带小数点,可以指定带几位小数,指定后会四舍五入
      typecode: d 将数值转换为整型显示;f 将数值转换为浮点数显示 s将数值转换为字符串显示
      #大家好,我叫 王尼玛,我今年35岁了,我有5000000.69
      print("大家好,我叫%+6s,我今年%d岁了,我有%10.2f" % ('王尼玛',35,5000000.687))

    • 用format格式化

      [[fill]align][sign][#][width][.precision][type]
      fill: 填充字符,可选
      align: 对齐方式  <左对齐  >右对齐  ^居中对齐
      sign:显示符号,+正数显示正号,负数显示符号;-正数不显示符号,负数显示符号
      #: 对于2、8、16进制会显示0b 0o 0x
       宽度
      , 千分位分隔符
      .precision:精度
      type: s字符串  d整型  f浮点数
      
      tp1 = "I am {}, age {}, {}".format("seven", 18, 'alex')
      tp2 = "I am {name}, age {age}, really {name}".format(name="seven", age=18)
      tp3 = "I am {:s}, age {:d}, money {:.0f}".format("seven", 18, 88888.1)
      print(tp1) #I am seven, age 18, alex
      print(tp2) #I am seven, age 18, really seven
      print(tp3) #I am seven, age 18, money 88888
  • 相关阅读:
    java 堆、栈、方法区/ 类变量、成员变量、局部变量
    native的详细用法
    《Java项目中classpath路径详解》
    事务四大特征:原子性,一致性,隔离性和持久性(ACID)
    Tomcat 配置文件server.xml详解
    linux下vim常用命令 (更新中...)
    #1572 小Hi与花盆
    leetcode 120. Triangle
    leetcode 174. Dungeon Game
    leetcode 368. Largest Divisible Subset
  • 原文地址:https://www.cnblogs.com/landmark/p/12729007.html
Copyright © 2011-2022 走看看