一、转义字符
有时候在输出一些字符串的时候会遇到被转义字符误解的情况,比如:
print("my nick name is "lalala".") #出问题了,两个双引号之间的内容被理解为单独的字符串了
这种情况有很多解决方式,最简单的是在要打印出来的引号前面加上\,还可以用不同类型的引号来区分内外关系,比如:
print("my nick name is \"lalala\".")
print("my nick name is 'lalala'.")
print('my nick name is '''lalala'''.')
另外,有些特殊含义字符(比如换行符\n,转义符\)出现在要打印的字符串中时,如果要将这些字符打印出来,就在其前面再加一个\,比如:
print("my nick name is \\"lalala\\".") #输出my nick name is \"lalala\".
print("my nick name \\n is \"lalala\".") #输出my nick name \n is "lalala".
二、字符串格式化输出
格式:%[(name)][flags][width][.precision]typecode
(name):用于选择指定的名称对应的值,一般只在输出的字符串为字典形式时才使用,不用可缺省,例如:
mathScore = 59
engScore = 58
print("math score is %(ms)d, eng score is %(es)d" % ({"es":engScore, "ms":mathScore}))
[flags]:标志位,有默认值
- 默认空:表示右对齐
- -:表示左对齐
- ‘ ’:加空格表示在正数的左侧填充一个空格,从而与负数对齐,注意无论加多少个空格,输出后只会填充一个空格
- 0:表示用0填充
[width]:表示输出的宽度,即一个输出的字符或字符串占多大位置
[.precision]:表示小数点后精度位数
typecode:必须写明,表示把字符串以什么形式输出
- i/d:将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置
- o:将整数转换成 八 进制表示,并将其格式化到指定位置
- x:将整数转换成十六进制表示,并将其格式化到指定位置
- e/E:将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e/大写E)
- f:将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)
- g/G:自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e/E;)
三、字符串拼接与切片
拼接不说了,切片就是获取一个字符串的某个片段,可以是一个字符也可以是一段字符串。
获取某一个字符:name[下标]
注意:下标越界会抛出异常
获取一个字符串片段:name[start:end:step]
反转字符串:name[::-1]
四、字符串内建函数
- len(name):返回名为name的字符串的长度,因为是内建函数,直接使用就行。
下面的方法都是对象方法了,不能像len(name)一样直接用,要使用 对象.方法(参数) 来调用,注意以下方法省略"对象.":
- find(sub, start=0, end=len(str)):查找第一个相同的子串索引位置,找到返回索引,找不到返回-1,从左往右找
- rfind(sub, start=0, end=len(str)):查找第一个相同的子串索引位置,找到返回索引,找不到返回-1,从右往左找
- index(sub, start=0, end=len(str)):获取子串索引位置,找到返回索引,找不到抛出异常,从左往右找
- rindex(sub, start=0, end=len(str)):获取子串索引位置,找到返回索引,找不到抛出异常,从右往左找
- count(sub, start=0, end=len(str)):计算某个子字符串的出现个数,返回一个整型值
- replace(old, new, [count]):使用给定的新字符串[new]替换原字符串中的旧字符串[old],count表示替换个数,可省略,返回一个新的字符串,并不会修改原字符串本身
- capitalize():将字符串首字母变为大写,返回首字符大写后的新字符串,并不会修改原字符串本身
- title():将字符串每个单词的首字母变为大写,返回每个单词首字符大写后的新字符串,并不会修改原字符串本身
- lower():将字符串每个单词的首字母变为小写,返回每个单词首字符小写后的新字符串,并不会修改原字符串本身
- upper():将字符串每个字符都变为大写,返回全部变为大写后的新字符串,并不会修改原字符串本身
- ljust(width, fillchar):根据指定字符(fillchar,1个),将原字符串填充够指定长度,l表示原字符串靠左,返回填充完毕的新字符串,并不会修改原字符串本身
- rjust(width, fillchar):根据指定字符(fillchar,1个),将原字符串填充够指定长度,r表示原字符串靠右,返回填充完毕的新字符串,并不会修改原字符串本身
- center(width, fillchar):根据指定字符(fillchar,1个),将原字符串填充够指定长度,原字符串居中,返回填充完毕的新字符串,并不会修改原字符串本身
- lstrip(chars):移除所有原字符串中指定字符(默认为空白字符),l表示从左侧开始移除,返回移除完毕的结果字符串,并不会修改原字符串本身
- rstrip(chars):移除所有原字符串中指定字符(默认为空白字符),r表示从右侧开始移除,返回移除完毕的结果字符串,并不会修改原字符串本身
- split(sep, maxsplit):将一个大的字符串分割成几个子字符串,sep表示分隔符,maxsplit表示最大分割次数,默认有多少分割多少,返回分割后的子字符串组成的列表,并不会修改原字符串本身
- partition(sep):根据指定的分隔符, 返回(分隔符左侧内容, 分隔符, 分隔符右侧内容),如果查找到分隔符,返回tuple类型的(分隔符左侧内容, 分隔符, 分隔符右侧内容),如果没有查找到分隔符,返回tuple类型的(原字符串, "", ""),从左侧开始查找分隔符,并不会修改原字符串本身
- rpartition(sep):根据指定的分隔符, 返回(分隔符左侧内容, 分隔符, 分隔符右侧内容),如果查找到分隔符,返回tuple类型的(分隔符左侧内容, 分隔符, 分隔符右侧内容),如果没有查找到分隔符,返回tuple类型的(原字符串, "", ""),从右侧开始查找分隔符,并不会修改原字符串本身
- splitlines(keepends):按照换行符(\r, \n), 将字符串拆成多个元素, 保存到列表中,参数keepends是bool类型,表示是否保留换行符,返回list类型的被换行符分割的多个字符串作为元素组成的列表,并不会修改原字符串本身
- join(iterable):根据指定字符串, 将给定的可迭代对象, 进行拼接, 得到拼接后的字符串,iterable表示可迭代对象(字符串,列表,元组等),返回拼接好的新字符串
- isalpha():字符串中是否所有的字符都是字母,返回bool型
- isdigit():字符串中是否所有的字符都是数字,返回bool型
- isalnum():字符串中是否所有的字符都是数字或者字母,返回bool型
- isspace():字符串中是否所有的字符都是空白符,包括空格,缩进,换行等不可见转义符,返回bool型
- startswith(prefix, start=0, end=len(str)):判定一个字符串是否以某个前缀prefix开头,返回bool型
- endswith(suffix, start=0, end=len(str)):判定一个字符串是否以某个后缀suffix结尾,返回bool型