字符串是 Python 中最常用的数据类型。如:
S='ABCD_1234'
一、字符串中的字符定位
字符串本质上就是单个字符组在的一个列表,可通过S[x]运算符指代相应字符,x标注在字符之前的位置,类似于打字的光标,代表该位置后的一个字符。第一个位置为0,S[0]表示字符'A'。[x:y]表示x和y两个位置之间的字符,[x:]和[:y]分别表示“”x位置之后的所有字符”和“y位置之前的所有字符”。如:[:6]表示第7个字符之前的所有字符(即:'ABCD_1')。
字符串对象提供了find('指定字符')和rfind('指定字符')两种方法,分别从头或从尾开始计算,返回所指定字符的下标位置,返回int类型数值。
二、字符查找、替换、插入、删除、计数
1、使用in或not in判断单个或连续的多个字符是否在字符串中。
2、使用find()、index()、rfind()、rindex()方法查找字符所在位置。
3、使用replace('A','B')方法,用B字符替换A字符;使用S.replace(r'想删除的字符','')可实现删除包括\n\t\r等特殊字符在内的任何ASCII字符的目的。
4、使用S[:x] + '需插入字符' + S[x:],在x位置插入想要插入的字符;同理可删除指定位置字符。
5、使用zfill(width)将字符串拓宽到width(数值)指定的宽度,并在字符串左边用'0'字符补齐。
6、使用ljust(width,[fillchar])、rjust(width,[fillchar])、center(width, [fillchar]),将字符串拓宽到width(数值)指定的宽度,然后居左、居右、居中对齐,并用fillchar指定字符补齐空位,默认补空格。
7、使用strip(delchar)、lstrip(delchar)、rstrip(delchar)可删除字符串两端指定字符(串),默认删除空格。
8、使用count(substr, [start, [end]]) 统计指定字符在字符串中出现的次数。
三、字符串、列表、元组相互转换
1、str()、list()、tuple()可实现字符串、列表、元组转换;list(S)将字符串S按单个字符转换成列表;tuple(L)将列表转换为元组,各元素数据类型不变。
2、使用split([sep, [maxsplit]])方法,以sep为分隔符,把字符串分割转换成一个列表(list)。maxsplit表示分割的次数。默认的分割符为空白字符。
3、使用[sep].jion(list)方法,以sep为分隔符,把列表中各元素连接成一个字符串。
四、字符串中的变量
1、%和%( )
字符串中用%加相应字母标记位置,字符串后紧接(不用分隔符)%( )
print "My name is %s and weight is %d kg!" % ('Zara', 21)
符 号 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
2、?和( )
字符串中用问号标记位置,括号中依顺序列出变量名,字符串与括号间用逗号分开。该方法用于SQL语句,SQL语句中不宜用Python的格式化字符串,如"%s",因为这一用法容易受到SQL注入攻击。
SQL="INSERT INTO people VALUES(?,?)",(who,age)
3、:和{ }
字符串中用:接变量名标记,{ }中用冒号给变量名赋值,字符串与{ }间逗号分隔
SQL="SELECT * FROM people WHERE name_last=:who1 AND age = :age1",{"who1":who,"age1":age}
4、{ }和format()
字符串中使用用空{ }或带标号的{ }标记位置,字符串后.format()传入替代内容。注意字符串用点连接format()。
"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序 'hello world'
"{0} {1}".format("hello", "world") # 设置指定位置,输出 'hello world'
"{1} {0} {1}".format("hello", "world") # 设置指定位置输出 'world hello world'
{ }中也可以设置参数名
print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))
format()可以直接设定值,也可以是引用其他变量。
print('value 为: {0.value}'.format(my_value)) # 向 str.format() 传入对象,"0" 是可选的