字符串基础


01.字符串是一个个字符组成的有序的序列,它是字符的集合。

  • 字符串的基本概念:
    • 字符串是用单引号,双引号和三引号引住的字符序列。
    • 字符串是不可变对象。
      • 对字符串的标识符做修改等于重新赋值;即修改标识符的内存的引用地址。
      • 不允许使用索引的方式对字符串中的元素重新赋值。
    • 字符串是unicode类型(python3)。
      -字符串是可迭代对象,因此可以使用list(),tuple()等方法转换为集合。
  • 字符串的定义方式:
str = "Hello World"
str2 = r"Hello \n World"
  • 字符串前加’r’,表示字符串中的特殊符号不做转义,比如换行符\n等。


02.字符串的内置方法:

  • 查询元素:
    • str[index],通过索引返回字符串中的元素,比如:
      str = "Dominos Pizza"
      print(str[5])
  • 添加元素:
    • +,使用”+”号可以拼接两个字符串,该操作会返回一个新的字符串。


03.字符串的拼接和切割:

  • join(),join()方法用于字符串的拼接,其格式为:
"字符串".join(可迭代对象)
  • join()方法使用”字符串”拼接可迭代对象中的每一个元素,比如:
      str = "Dominos Pizza"
      print('√'.join(str))
  • join()方法的参数的可迭代对象中的元素必须为字符串类型,如是其他类型可通过map()方法转换,比如:
      print('√'.join(map(str, range(10))))
  • join()方法会返回一个新的字符串。
  • split(),split()方法用于按照指定字符切割字符串,其格式为:
"字符串".split(sep=None, maxsplit=-1)
  • split()方法会返回一个列表,列表中为字符串中按照特定规则切割后的所有元素。
    • sep,切割字符,若不指定则默认为空白字符;如字符串中有连续多个空白字符,则切割时默认为一个空白字符。
      • 如果字符串中不包含切割字符,则会将字符串作为一个整体放入列表中。
    • maxsplit,最大的切割次数(从左往右),默认为-1,表示不限制。
  • split()方法从左边开始切割,若需要从右边开始切割,可使用rsplit()方法。
    • split()方法不会改变列表中元素的顺序。
  • split()方法的示例:
      str = "I like Dominos Pizza"
      result = str.split('i', maxsplit=2)
      print(result)
  • splitlines(),splitlines()方法用于按照换行符切割字符串,其格式为:
"字符串".splitlines(keepends=False)
  • keepends,是否需要保留换行符,默认为False。
    • 换行符包括/r,/n,/r/n等。
  • partition(),partition()用于按照指定的字符切割字符串,其格式为:
    "字符串".partition(sep, /)
  • partition()方法会返回一个元组:
    • 字符串中包含sep,则返回包含3个元素的元组,分别是sep左边的字符串,sep及右边的字符串。
    • 字符串中不包含seq,则返回包含3个元素的元组,分别是原始的字符串和2个空字符串。
  • partition()方法从左边开始切割,若需要从右边开始切割,可使用rpartition()方法。
    • rpartition()方法不会改变元组中元素的顺序。
  • partition()方法的示例:
      str = "I like Dominos Pizza"
      result = str.partition('i')
      print(result)


04.字符串的常用函数:

  • 大小写类:
    • upper(),将字符串全部转换为大写字符,比如:
      str = "I like Dominos Pizza"
      result = str.upper()
      print(result)
    • lower(),将字符串全部转换为小写字符,比如:
      str = "I like Dominos Pizza"
      result = str.lower()
      print(result)
    • swapcase(),将字符串中的小写字符转换为大写字符,将字符串中的大写字符砖汉为小写字符,比如:
      str = "I like Dominos Pizza"
      result = str.swapcase()
      print(result)
    • title(),将每个单词的第一个字符转换为大写字符,比如:
      str = "i like dominos pizza"
      result = str.title()
      print(result)
    • capitlize(),将第一个单词的第一个字符转换为大写字符,比如:
      str = "i like dominos pizza"
      result = str.capitalize()
      print(result)
  • 排版类(使用的较少,可用format()函数替代):
    • center(width, [fillchar]),将字符串居中打印,比如:
      str = "i like dominos pizza"
      result = str.center(30, "★")
      print(result)
      • width,整个区域的长度,如果width大于字符串的长度,则多余部分用fillchar填充;反之则打印整个字符串。
      • fillchar,用于填充的字符,默认为空格。
    • zfill(width),居右打印,左边用0填充。
    • ljust(width, [fillchar]),将字符串居左打印,并用字符填充剩余空间,比如:
      str = "i like dominos pizza"
      result = str.ljust(30, "★")
      print(result)
    • rjust(width, [fillchar]),将字符串居右打印,并用字符填充剩余空间,比如:
      str = "i like dominos pizza"
      result = str.rjust(30, "★")
      print(result)
  • 修改类:
    • replace(old, new, count=-1, /),从左至右查找并替换字符串中的字符,比如:
      str = "i like dominos pizza"
      result = str.replace('i', "★")
      print(result)
      • old,被替换的字符串。
      • new,用于替换的字符串。
      • count,替换的次数,-1表示不限制次数,默认为-1。
    • strip(chars=None, /),去除字符串左右两边的指定字符,比如:
      str = "i like dominos pizza, do i"
      result = str.strip('i')
      print(result)
      • strip(ab)是移除两边的a字符和b字符,而非移除’ab’;即如果两边是’ba’,也会被移除。
      • 如果不指定chars,则默认去除空白字符。
      • 使用lstrip()或者rstrip()可以指定清除左边或者右边的指定字符。
  • 查找类:
    • find(sub[, start[, end]]),在指定的区间内,从左至右查找字符串sub;找到返回索引位置,没找到返回-1,比如:
      str = "I like dominos pizza"
      result = str.find('like', 2, 6)
      print(result)
      • sub只要找到一次就返回,即找到之后不会再进行第二次查找。
      • start和end表示指定的区间,包括start但不包含end。
        • 以坐标系来理解,start必须在end的左侧,不论是find()或rfind()。
      • rfind(sub[, start[, end]]),在指定的区间内,从右至左查找字符串sub;找到返回索引位置,没找到返回-1。
    • index(sub[, start[, end]]),在指定的区间内,从左至右查找字符串sub;找到返回索引位置,没找到抛出ValueError异常,比如:
      str = "I like dominos pizza"
      result = str.index('like', 2, 5)
      print(result)
      • sub只要找到一次就返回,即找到之后不会再进行第二次查找。
      • start和end表示指定的区间,包括start但不包含end。
        • 以坐标系来理解,start必须在end的左侧,不论是index()或rindex()。
      • rindex(sub[, start[, end]]),在指定的区间内,从右至左查找字符串sub;找到返回索引位置,没找到抛出ValueError异常。
    • len(string),返回字符串的长度,即字符的个数,比如:
      str = "I like dominos pizza"
      result = len(str)
      print(result)
    • count(sub[, start[, end]]),在指定的区间内,统计字符串sub出现的次数,比如:
      str = "I like dominos pizza"
      result = str.count('i', 5, 15)
      print(result)
      • start和end表示指定的区间,包括start但不包含end。
  • 字符串判断类:
    • endswith(suffix[, start[, end]]),在指定的区间内,字符串是否以suffix结尾;是返回True,否则返回False,比如:
      str = "I like dominos pizza"
      result = str.endswith('pizza')
      print(result)
      • start和end表示指定的区间,包括start但不包含end。
    • startswith(suffix[, start[, end]]),在指定的区间内,字符串是否以suffix开头;是返回True,否则返回False,比如:
      str = "I like dominos pizza"
      result = str.startswith('pizza', 5, 15)
      print(result)
      • start和end表示指定的区间,包括start但不包含end。
    • is系列,用于判断字符串是否满足指定的条件;是则返回True,否则返回False;is系列包括:
      • isalnum(),是否是数字和字母组成。
      • isalpha(),是否全部由字母组成。
      • isdecimal(),是否全部由十进制的数字组成(Unicode数字,全角数字)。
      • isdigit(),是否全部由0-9的数字组成。
      • isidentifier(),是否是字母和下划线开头,其他字符都是字母,数字和下划线。
      • islower(),是否全部由小写字母组成。
      • isupper(),是否全部由大写字母组成。
      • isspace(),是否只包含空白字符。


字符串格式化


01.字符串的格式化是一种拼接字符串输出样式的手段,较为灵活方便。

  • 在python2.5版本之前,只能使用printf style风格的print输出,其格式为:
"format" % value
  • [x]printf-style formatting参数格式说明:

    • format,字符串和占位符的组合;占位符可以有多个,常见的有%s(字符串),%d(数值)等。
    • %,固定写法。
    • value,要格式化的内容;如果占位符超过1个,则value必须为元组格式。
  • [x]printf-style formatting的示例:

      print("I am %s!" % 'program')
      print("I am %03d years old" % (34, ))
      print("I work in %s and my major is %s" % ('dominos', 'it')
  • 在python2.5版本开始,官方建议使用format()函数对字符串进行格式化,其格式为:

"{} {xxx}".format(*args, **kwargs)
  • format()函数返回一个新的字符串。
  • args是位置参数,是一个元组;kwargs是关键字参数,是一个字典。
  • 花括号{}表示占位符:
    • {n},表示取位置参数索引为n的值。
      • 如果不指定n,则第一个{}默认为{0},第二个{}默认为{1},以此类推。
      • 占位符不允许同时出现{}和{n}。
    • {xxx},表示取关键字参数中key与xxx一致的值。
    • {{}},表示打印花括号。
  • format()函数的示例:
      print('{}:{}'.format('192.168.1.1', '80'))
      print('server:{server} {}:{}'.format('192.168.1.1', '80',server='vms0010'))
      print("{0[name]}:{0[age]}".format({"name": "wenjun", "age": "35"}))


02.format()的对齐。

  • format()函数可以设置对齐,其格式为:
{索引:填充符对齐符字符宽度}
  • 索引,即为format()函数中的参数的顺序。
  • 填充符,表示如输出小于字符宽度,则用什么补全;如不指定,默认为空格。
  • 对齐符,包括^(居中),<(向左对齐)和>(向右对齐)。
  • 字符宽度,该字符占据的宽度,如果设置小于字符本身宽度,则其值会被本身宽度覆盖(以字符串本身宽度为准)。
  • format()函数的对齐示例:
print('{0}:{1}={2:#<4}'.format(2, 3, 2*3))
print('{:★^30}'.format('I like dominos pizza'))
print('{:0<10f}'.format(3**0.5))
print('{:3.3f}'.format(3**0.5))
文档更新时间: 2020-04-06 17:16   作者:闻骏