- 字符串的基本操作
转义字符(与C++中的转义字符相近,但有略微差别),以“\"开始后面跟相应字符执行相应操作。需要用到转移操作时,就需要用到转义字符。
转义字符 | 描述 | 转义字符 | 描述 |
\(在行尾) | 续行符 | \n | 换行 |
\\ | 反斜杠符号 | \v | 纵向制表符 |
\' | 单引号 | \t | 横向制表符 |
\'' | 双引号 | \r | 回车 |
\a | 响铃 | \f | 换页 |
\b | 退格(Backspace) | \oyy | 八进制数,yy代表字符,如\o12代表换行 |
\e | 转义 | \xyy | 十六进制数,yy代表字符 |
\000 | 空 | \other | 其他字符以普通格式输出 |
字符串操作中,序列所有的操作(索引、分片、成员资格等)同样适用。但需要注意的是,不能对字符串进行分片赋值,因为字符串是不可变的。
- 字符串格式化
字符串格式化即通过格式化符号在字符串的某一位置准确插入想要加入的值(字符),格式化使用的标识符是百分号(%)。
符号 | 描述 | 符号 | 描述 |
%c | 格式化字符及其ASCII码 | %f | 格式化浮点数字,可指定精度值(若不指定精度,则默认输出6位小数) |
%s | 格式化字符串(占位符) | %e | 用科学记数法格式化浮点数 |
%d | 格式化整数 | %E | 作用同%e,用科学记数法格式化浮点数 |
%u | 格式化无符号整型 | %g | %f和%e的简写 |
%o | 格式化无符号八进制数 | %G | %f和%E的简写 |
%x | 格式化无符号十六进制数 | %p | 用十六进制数格式化变量的地址 |
%X | 格式化无符号十六进制数(大写) |
其中,常用的有:%s、%d、%f以及%e和%E。另外需要注意的是,如果需要输出“%”号,则需要用到格式化字符串。
当右操作数是元组时,元组的每一个元素都会被单独格式化,也就是说,存在多个占位符时,需要使用元组传入多个格式化值。这里需要注意的是,只有元组和字典可以格式化一个以上的值,如果使用列表或其他序列代替元组,序列就会被解释为一个值。
格式化转换顺序:
1、%字符:标记转换说明符开始;
2、转换标志:‘-’表示对齐;‘+’表示在转换值之前要加上正负号;‘ ’(空白字符)表示正数之前保留空格;0表示转换值位数不够用时用0填充。
3、最小字段宽度:转换后的字符串至少应该具有该值指定的宽度。如果是‘*’,宽度会值元组中读取。
4、点‘.'后跟精度值:如果转换的是实数,精度值表示出现在小数点后的位数;如果转换的是字符串,该数字就表示最大字段宽度;如果是’*‘,精度就会从元组中读出。
举例:
(1)简单转换:简单转换只需要写出转换类型。
(2)字段宽度和精度:字段宽度和精度都是整数,并通过‘.’分隔。
字段宽度:转换后的值保留的最小字符个数;
字段精度:数字转换后结果中应该包含的小数位数或字符串转换后的值所能包含的最大字符个数。
格式:%字段宽度.精度
还可以使用“*”作为字段宽度或精度(或两者都用“*”),数值会从元组中读出。
(3)符号、对齐和0填充:在字段宽度和精度之前可放置一个“标表”,可以是0、+、-或空格,其中“0”表示用“0”填充。
- 字符串方法
1、find()方法:
用于检测字符串中是否包含字符串str,str.find(str,beg=0,end=len(string))其中,红色str表示需要检测的字符串,beg代表开始索引,默认值为0,end代表结束索引,默认为字符串长度,find返回结果为字串所在位置的最左端索引,如果没有找到则返回-1.通过起始值的设置,可以查找指定范围内是否存在指定字符串。
需要注意的是,find方法返回的不是布尔值,如果返回0,则代表在索引0处找到了子字符串。
2、join()方法:
将序列中的元素以指定字符连接成一个新字符串 str.join(sequnence).返回结果为指定字符连接序列中的元素后生成的新字符串。需要注意的是,jion操做只针对字符串,任意不是一个不是字符串都会报错。
3、lower()方法:
将字符串中所有大写字符转换成小写。返回结果为字符串中所有大写字符转化为小写后生成的字符串,该方法没有参数。
4、upper()方法:
将字符串中所有小写字符转换成大写。与lower方法类似。
使用lower或upper方法后,对转换后的字符查找格式:str.upper/lower().find('str'.upper/lower()).
5、swapcase()方法:
对字符串的大小进行转换,即将大写转换成小写,将小写转换为大写。与lower方法类似。
6、replace()方法:
把字符串中的old(旧字符串)替换成new(新字符串),如果指定第三个参数max,则替换次数不得超过max次。 str.replace(old,new[,max]).
当不指定第三个参数时,所有匹配的字符都替换;指定第三个参数时,替换从左往右进行,替换次数不得超过指定次数。
7、split()方法:
通过指定分割符,对字符串进行切片,是join的逆方法。str.split(st=" “,num=string.count(str)),其中str代表指定检索的字符串;st代表分隔符,默认为空格;num代表分割次数,返回结果为分割后的字符串列表。若指定分割次数,则从左往右检索和分隔符匹配的字符,分割次数不得超过指定次数,若不指定分割次数,则所有匹配的字符都会被分割。
8、strip()方法:
移除字符串头尾指定的字符。str.strip([chars]).其中,chars代表移除字符串头尾指定的字符,返回结果为移除指定字符后生成的新字符串。
此方法只会去除头尾匹配的字符,中间匹配的字符不会去除。
9、translate()方法:
根据参数table给出的表(包含256个字符)转换字符串的字符,将要过滤的字符放到del参数中去。str.translate(table[,deletechars]).其中,str代表指定检索的字符串;table代表翻译表,翻译表通过maketrans方法转换而来,deletechars代表字符串中要过滤的字符列表。
translate方法只处理单个字符,其优势在于可以同时多个替换。