一、字符串详解
1、字符串特点
字符串创建后不可修改;
若要拼接或修改创建好的字符串都会造成重新生成字符串;
只能进行加减运算
字符串用单引号或双引号引起来,例如:"this is a String" 'this is a String'
2、字符串常用功能
需求描述
右列代码的解释
实现代码举例
判断和转换字符串大小写
包含常见字符;
v = "heLlO" x= v.lower() print(x)
包含常见字符;
v = "heLlO" x= v.islower() print(x)
包含常见字符;
v = "heLlO" x= v.upper() print(x)
包含常见字符;
v = "heLlO" x= v.isupper() print(x)
查找字符串子序列的索引位置
从开始往后找,找到第一个就获取其位置,并终止查找;
v = "012312" x = v.find('12') print(x)
从指定位置找,此功能的前边位置为开区间>=,后边位置为闭区间<;
v = "012312" y = v.find('12',4,6) print(y)
字符串拼接
a = "你好你好" a = " ".join(a) print(a)
去除左右空格字符和不可见字符
备注:若括号内写字符,则移除指定字符,从最多开始匹配;
a = " hello " b = a.strip() print(b)
去除左空格字符和不可见字符
备注:若括号内写字符,则移除指定字符,从最多开始匹配;
a = " hello " b = a.lstrip() print(b)
去除右空格字符和不可见字符
备注:若括号内写字符,则移除指定字符,从最多开始匹配;
a = " hello " b = a.rstrip() print(b)
分隔信息,指定分隔段数,从左到右
备注:指定分隔符不显示
a = "abcdffodooodxxx" b = a.split("d") print(b)
分隔信息,指定分隔段数,从右到左
备注:指定分隔符不显示
a = "abcdffodooodxxx" b = a.rsplit("d") print(b)
字符串的替换
代码中的2指只替换前两个匹配字符,如果 不指第三个参数则全替换。
a = "hallohallohallo" b = a.replace("a","e",2)
获取字符串中的某一个字符
a = "hello" b = a[3] print(b)
0>=范围<3 -1代表最后一位 -2代表倒数第二位;
a = "hello" b = a[0:3] print(b)
Python3中获取的是字符的个数
Python2.7中获取的是字符的字节数
Python3中获取的是字符的个数
Python2.7中获取的是字符的字节数
a = "hello" b = len(a) print(b)
检查以什么开头
v = "heLlO" y = v.startswith('h') print(y)
检查以什么结尾
v = "heLlO" y = v.endswith('O') print(y)
一个个输出字符串的方法
a为变量名
test = "降龙十八掌"
for a in test:
print(a)
创建一个范围的数字
0>=范围<100 5为设置的步长(默认步长则是连续的),
范围如果从100到0,则步长需要时负数,比如是-1。
注意:Python2.7中一次性创建范围内所有数字;而Python3则做了优化,
只能通过for循环每次创建一个数字;
如果要再Python2中也一个个创建,则需要使用xrange;
a = range(0,100,5)
for iterm in a:
print(iterm)
3、字符串不常用功能
需求描述
右列代码的解释
实现代码举例
首字母大写
v = "hello" x = v.capitalize() print(x)
字母大写变小写
包含常见和不常见字符;
v = "heLlO" x = v.casefold() print(x)
设置宽度并将内容居中
20代表内容所占宽度,*位置只能用一个字符,不能是数字,但是可有可无;
v = "Hello" x = v.center(20,"*") print(v)
计算字符或子序列出现多少次
L位置要统计的字符或者子序列, 5,6代表要统计的始末位置;
v = "heLlO" x = v.count("L",5,6) print(x)
查找子序列的位置
index与find不同的是:find没找到显示-1,index查找不到会报错;
v = "01632" x = v.index('9') print(x)
用户数据套用模板格式进行输出
test = "i am {name}",age(a) i = test.format(name="tom",a=19) print(i)
test = "i am {0}",age(1) i = test.format("tom",19) print(i)
test = "i am {name}",age(a) i = test.format_map({"name":"tom","a":19}) print(i)
判断字符串中是否只是包含的字母和数字
test = "123abc" v = test.isalnum() print(v)
判断字符串中是否只是包含字母
test = "123abc" v = test.isalpha() print(v)
调整列宽为指定长度,常用语做表格
\t 制表符 \n 换行符
test = "123\tabc\tcdd\t\n123\tabc\tcdd\t" v = test.expandtabs(20) print(v)
判定输入的是否是数字
不支持识别特殊格式的数字
a = "123" x = a.isdecimal() print(x)
判定输入的是否是数字
支持识别特殊格式的数字
a = "123" x = a.isdigit() print(x)
判定输入的是否是数字
支持识别特殊格式的数字和中文数字
a = "123" x = a.isnumeric() print(x)
判断输出的内容是否有不可显示的字符
a = "123/t" x= a.printable() print(x)
判断是否全部都是空格
a = " " x= a.isspace() print(x)
判断是否是标题
a = "Hello Word" x= a.istitle() print(x)
将非标题变成标题
a = "Hello word" x= a.title() print(x)
指定占用宽度并将内容居中
20为宽度,"*"为填充字符
a = "hello" b = a.center(20,"*") print(b)
指定占用宽度并将内容居左
20为宽度,"*"为填充字符
a = "hello" b = a.ljust(20,"*") print(b)
指定占用宽度并将内容居右
20为宽度,"*"为填充字符
a = "hello" b = a.rjust(20,"*") print(b)
规避敏感信息
v1 = "不良言论" v2 = "****" v3 = str.maketrans(v1,v2)
a = "某人发表的不良言论" b = a.translate(v3) print(b)
分隔信息,只能分隔三段; 从左到右
备注:指定分隔符显示
a = "abcdffodooodxxx" b = a.partition("d") print(b)
分隔信息,只能分隔三段; 从右到左
备注:指定分隔符显示
a = "abcdffodooodxxx" b = a.rpartition("d") print(b)
只能根据换行符分隔
参数解释:True显示/n,flase不显示换行符
a = "abcdf/nodoo/nodxxx" b = a.rsplitlines(True) print(b)
大小写转换
a = "hello" b = a.swapcase() print(b)
二、字符串拼接
1、百分号字符串拼接
1)举例:%s 可以接收任何值,%d只可以接收数字
aaa = 'i am %s my hobby is %s' % ('xxx','yyy')
aaa = 'i am %s my hobby is %s' % ('xxx',1)
aaa = 'i am %s my hobby is %s' % ('xxx',[1,2])
name = 'xxx'
age = 33
aaa = 'i am %s my hobby is %d' % (name,age)
说明:%.3s中的.3的意思是 接收的数据长度为3位,不常用,知道即可;
2)举例:%f用来拼接浮点数
tpl = "percent %.2f" % 99.976236666666 #%.2f中的.2代表四舍五入保留小数点后两位长度的小数
tpl = 'percent %.2f %%' % 99.9762366666666 #%% 代表打印%符号
tpl = "i am %(name)s age %(age)d" % {"name": "aaa", "age": 18} #使用字典传值
msg='i am %(name)+60s my hobby is alex' %{'name':'lhf'}
msg='i am \033[43;1m%(name)+60s\033[0m my hobby is alex' %{'name':'lhf'} #拼接内容增加颜色
print('root','x','0','0',sep=':') #用指定符号来为字符串分隔
3)%拼接理论知识
%[(name)][flags][width].[precision]typecode
(name) 可选,用于选择指定的key
flags 可选,可供选择的值有:
+ 右对齐;正数前加正好,负数前加负号;
- 左对齐;正数前无符号,负数前加负号;
空格 右对齐;正数前加空格,负数前加负号;
0 右对齐;正数前无符号,负数前加负号;用0填充空白处
width 可选,占有宽度
.precision 可选,小数点后保留的位数
typecode 必选
s,获取传入对象的__str__方法的返回值,并将其格式化到指定位置
r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置
c,整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置
o,将整数转换成 八 进制表示,并将其格式化到指定位置
x,将整数转换成十六进制表示,并将其格式化到指定位置
d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置
e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)
E,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E)
f, 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)
F,同上
g,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)
G,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;)
%,当字符串中存在格式化标志时,需要用 %%表示一个百分号
注:Python中百分号格式化是不存在自动将整数转换成二进制表示的方式
2、format字符串拼
1)format拼接常用功能举例
aabbc = "i am {}, age {}, {}".format("six", 18, 'tom')
aabbc = "i am {}, age {}, {}".format(*["six", 18, 'tom'])
aabbc = "i am {0}, age {1}, really {0}".format("six", 18)
aabbc = "i am {0}, age {1}, really {0}".format(*["six", 18])
aabbc = "i am {name}, age {age}, really {name}".format(name="six", age=18)
aabbc = "i am {name}, age {age}, really {name}".format(**{"name": "six", "age": 18})
aabbc = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33])
aabbc = "i am {:s}, age {:d}, money {:f}".format("six", 18, 88888.1)
aabbc = "i am {:s}, age {:d}".format(*["six", 18])
aabbc = "i am {name:s}, age {age:d}".format(name="six", age=18)
aabbc = "i am {name:s}, age {age:d}".format(**{"name": "six", "age": 18})
aabbc = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
aabbc = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format(15)
aabbc = "numbers: {num:b},{num:o},{num:d},{num:x},{num:X}, {num:%}".format(num=15)
说明:#b代表二进制,o代表8进制,d代表证书,x代表十六进制小写,X代表十六进制大写,%代表转换为百分
2)format理论知识
[[fill]align][sign][#][0][width][,][.precision][type]
fill 【可选】空白处填充的字符
align 【可选】对齐方式(需配合width使用)
<,内容左对齐
>,内容右对齐(默认)
=,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
^,内容居中
sign 【可选】有无符号数字
+,正号加正,负号加负;
-,正号不变,负号加负;
空格 ,正号空格,负号加负;
# 【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示
, 【可选】为数字添加分隔符,如:1,000,000
width 【可选】格式化位所占宽度
.precision 【可选】小数位保留精度
type 【可选】格式化类型
传入” 字符串类型 “的参数
s,格式化字符串类型数据
空白,未指定类型,则默认是None,同s
传入“ 整数类型 ”的参数
b,将10进制整数自动转换成2进制表示然后格式化
c,将10进制整数自动转换为其对应的unicode字符
d,十进制整数
o,将10进制整数自动转换成8进制表示然后格式化;
x,将10进制整数自动转换成16进制表示然后格式化(小写x)
X,将10进制整数自动转换成16进制表示然后格式化(大写X)
传入“ 浮点型或小数类型 ”的参数
e, 转换为科学计数法(小写e)表示,然后格式化;
E, 转换为科学计数法(大写E)表示,然后格式化;
f , 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
F, 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
g, 自动在e和f中切换
G, 自动在E和F中切换
%,显示百分比(默认显示小数点后6位)