1、计算字符串的长度
由于不同字符串所占用字节数不同,所以要计算字符串的长度,需要先了解各字符串所占的字节数。在Python中,数字、英文、小数点、下划线和空格占一个字节:一个汉字可能会占用2-4字节,占几个字节取决于采用的编码。汉字在GBK/GB2312编码中占2个字节,在UTF-8/unicode编码中一般占用3个字节(或4个字节)。
在Python中,提供了len()函数计算字符串的长度,语法格式如下:
len(string)
其中,string用于指定要进行长度统计的字符串。在默认的情况下,通过len()函数计算字符串的长度时,不区分英文、数字和汉字,所有字符都按一个字符计算。
在实际开发时,有时需要获取字符串实际所占的字节数,即如果采用UTF-8编码,汉字占3个字节,采用GBK或者GB2312时,汉字占2个字节。这是,可以通过使用encode()方法进行编码后再进行获取。
如果要获取采用UTF-8编码的字符串的长度,可以使用下面的代码:
str1 = '人生苦短,我用Python!'
length = len(str1.encode())
print(length)
上面代码执行后将显示28,这是因为汉字加中文标点符号共7个,占21个字节,英文字母和英文的标点符号占7个字节,共28个字节。
如果采用GBK编码的字符串长度,可以使用下面的代码:
str1 = '人生苦短,我用Python!'
length = len(str1.encode('gbk'))
print(length)
上面的代码执行后,将显示21,这是因为汉字加中文标点符号共7个,占14个字节,英文字母和英文的标点符号占7个字节,共28个字节。
2、截取字符串
由于字符串也属于序列,所以要截取字符串,可以采取切片方法实现。通过切片方法截取字符串的语法格式如下:
string[start:end:step]
参数说明:
- string:表示要截取的字符串;
- start:表示要截取的死一个字符的索引,包括该字符,如果不指定,则默认是0;
- end:表示要截取的最后一个字符的索引,不包括该字符,如果不指定则默认字符串的长度;
- step:表示切片的长度,如果省略,则默认是1,当省略该步长时,最后一个冒号也可以省略。
3、分割、合并字符串
在Python中,字符串对象提供了分割和合并字符串的方法。分割字符串是把字符串分割为列表而和并字符串是把类标合并为字符串,分割字符串和合并字符串可以看做是互逆操作。
3.1 分割字符串
字符串对象的split()方法可以实现字符串分割,也就是把一个字符串按照指定的分隔符切分为字符串列表。该列表的元素中,不包括分割符。split()方法的语法格式如下:
str.split(sep,maxsplit)
参数说明:
- str:表示要进行分割的字符串;
- sep:用于指定分隔符,可以报刊多个字符,默认为None,即所有空字符(包括空格、换行符’\n’、制表符’\t’等);
- maxsplit:可选参数,用于指定分割的次数,如果不指定或者为-1,则分割次数没有限制,否则返回结果列表的元素个数,个数最多为maxsplit+1;
- 返回值:分隔后的字符串列表;
str = '明 日 学 院 官 网 >>> www.mingrisoft.com'
print(str.split())
['明', '日', '学', '院', '官', '网', '>>>', 'www.mingrisoft.com']
print(str.split('>>>'))
['明 日 学 院 官 网 ', ' www.mingrisoft.com']
print(str.split('.'))
['明 日 学 院 官 网 >>> www', 'mingrisoft', 'com']
print(str.split(' ', 4))
['明', '日', '学', '院', '官 网 >>> www.mingrisoft.com']
print(str.split('>'))
['明 日 学 院 官 网 ', '', '', ' www.mingrisoft.com']
注意: 在使用split()方法时,如果不指定参数,默认采用空白符进行分割,这时无论有几个空格或者空白符都将作为一个分隔符进行分割。如果指定一个分隔符,那么当这个分隔符出现多个时,就会每个分隔一次,没有得到内容的,将产生一个空元素。
3.2 合并字符串
合并字符串与拼接字符串不用,它会将多个字符串采用固定的分隔符连接在一起。合并字符串可以使用字符串对象的join()方法实现,语法结构如下:
strnew = string.join(iterable)
- strnew:表示合并后生成的新字符串;
- string:字符串类型,用于指定合并时的分隔符;
- iterable:可迭代对象,该迭代对象中的所有元素(字符串表示)将被合并为一个新的字符串。string作为边界点分割出来;
list_name = ['绮梦', '冷伊一', '香凝', '黛兰']
print('*'.join(list_name))
输出:绮梦*冷伊一*香凝*黛兰
4、去除字符串中的空格和特殊字符
4.1 strip()方法
strip()方法用于去掉字符串左、右两侧的空格和特殊字符,语法格式如下:
str.strip([chars])
参数说明:
- str:为要去除空格的字符串
- chars:为可选参数,用于指定要去除的字符,可以指定多个。如果设置chars为“@.”,则去除左右两则的包括“@”或者“.”。如果不指定chars参数,默认去除空格、制表符“\t”,回车符“\r”、换行符“\n”等。
5、格式化字符串
格式化字符串是指事先制定一个模板,在这个模板中预留几个空位,然后再根据需要填上相应的内容。这些空位需要通过指定的符号标记(也称为占位符),而这些符号还不会显示出来。在Python中,格式化字符串有以下两种方法:
5.1 使用%操作符
在Python中,要实现格式化字符串,可以使用%操作符,语法格式如下:
%[-][+][0][m][.n]格式化字符%exp
参数说明:
- -:可选参数,用于指定左对齐,正数前方无符号,负数前方加负号;
- +:可选参数,用于指定右对齐,正数前方加正号,负数前方加负号;
- 0:可选参数:表示右对齐,正数前方无符号,负数前方加负号,用0填充空白处(一般与参数一起使用);
- m:可选参数,表示占有宽度;
- .n:可选参数,表示小数点后保留的位数,一般与%f浮点数表示使用;
- 格式化符号用于指定类型;例如“%+09.3f”表示前面加+/-号,中间补充九个0,保留小数点后三位的浮点数。可以是3.14156,表示为+0003.142;
- exp:要转换的项。如果指定的项有多个,需要通过元组的形式进行指定,但不能使用列表;
5.2 使用字符串对象的format()方法
字符串对象提供了format()方法用于进行字符串格式化,语法格式如下:
str.format(args)
参数说明:
- str:用于指定字符串的显示样本(即模板);
- args:用于指定要转换的项,如果有多项,则用逗号进行分隔;
说明: 当一个模板中,出现多个占位符时,指定索引位置的规范需要统一,即全部采用手动指定,或者全部采用自动。例如,定义“我是数值:{:d},我是字符串:{1:s}”模板是错误的,因为上面设置了一个自动指定,一个手动指定。
template = '编号:{:0>9s} \t 公司名称:{:s} \t官网: http://www.{:s}.com'
context = template.format('7', '百度', 'baidu')
print(context)
编号:000000007 公司名称:百度 官网: http://www.baidu.com