字符串基础
01.字符串是一个个字符组成的有序的序列,它是字符的集合。
- 字符串的基本概念:
- 字符串是用单引号,双引号和三引号引住的字符序列。
- 字符串是不可变对象。
- 对字符串的标识符做修改等于重新赋值;即修改标识符的内存的引用地址。
- 不允许使用索引的方式对字符串中的元素重新赋值。
- 字符串是unicode类型(python3)。
-字符串是可迭代对象,因此可以使用list(),tuple()等方法转换为集合。
- 字符串的定义方式:
str = "Hello World"
str2 = r"Hello \n World"
- 字符串前加’r’,表示字符串中的特殊符号不做转义,比如换行符\n等。
02.字符串的内置方法:
- 查询元素:
- str[index],通过索引返回字符串中的元素,比如:
str = "Dominos Pizza" print(str[5])
- str[index],通过索引返回字符串中的元素,比如:
- 添加元素:
- +,使用”+”号可以拼接两个字符串,该操作会返回一个新的字符串。
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,表示不限制。
- sep,切割字符,若不指定则默认为空白字符;如字符串中有连续多个空白字符,则切割时默认为一个空白字符。
- 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)
- upper(),将字符串全部转换为大写字符,比如:
- 排版类(使用的较少,可用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)
- center(width, [fillchar]),将字符串居中打印,比如:
- 修改类:
- 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()可以指定清除左边或者右边的指定字符。
- replace(old, new, count=-1, /),从左至右查找并替换字符串中的字符,比如:
- 查找类:
- 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。
- find(sub[, start[, end]]),在指定的区间内,从左至右查找字符串sub;找到返回索引位置,没找到返回-1,比如:
- 字符串判断类:
- 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(),是否只包含空白字符。
- endswith(suffix[, start[, end]]),在指定的区间内,字符串是否以suffix结尾;是返回True,否则返回False,比如:
字符串格式化
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一致的值。
- {{}},表示打印花括号。
- {n},表示取位置参数索引为n的值。
- 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 作者:闻骏