课前补充:
a=10
if a>10:
pass #占位符,没有操作
else:
print("<=10")
第四章 字符串
表示方法:
python不支持单字符类型,单个字符也是一个字符串。
-
使用单引号
str1='aaa"1234"def' # 单引号中可以包含双引号 str2='ascd\'sa' #转义符可以包含单引号 print(str1) print(str2)
-
使用双引号
-
使用三引号
a='''asasd 123456''' print(a) # 输出结果:asasd # 123456
可以在三引号之中换行并且不使用换行符。
b='''asd"asd"'123456'a''' print(b) # 输出结果:asd"asd"'123456'a
字符串注意事项:
-
一旦被创建就不可以被修改
-
字符串相加产生新对象:
s1="123" s2="456" print(s1+s2) # 输出结果:123456
转义符:
转义字符 | 描述 |
---|---|
(在行尾时) | 续行符 |
\ | 反斜杠符号 |
\’ | 单引号 |
\” | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\e | 转义 |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数yy代表的字符,例如:\o12代表换行 |
\xyy | 十进制数yy代表的字符,例如:\x0a代表换行 |
\other | 其它的字符以普通格式输出 |
字符串的输出:
-
格式化输出:
a=1 b=2 print("%d,%d" %(a,b)) # 多个数据输出
-
format函数格式化输出:
-
位置:
print("{} {}".format("123","456")) # 默认顺序输出 print("{1} {0}".format("123","456")) # 颠倒位置 print("{1} {0} {0}".format("123","456")) # 重复输出 ''' 输出结果: 123 456 456 123 456 123 123 '''
-
设置参数:
print("名字:{name},年龄:{age}".format(name="sss",age="18")) # 通过字典 site={"name":"sss","age":"19"} print("名字:{name},年龄:{age}".format(**site)) #通过列表索引 list1=["sss","14"] print("名字:{0[0]},年龄:{0[1]}".format(list1)) #{0[0]},第一个0代表format中的第一个列表,第二个0代表列表中的第一个参数 ''' 输出结果: 名字:sss,年龄:18 名字:sss,年龄:19 名字:sss,年龄:14 '''
-
类方法:
class A(object): #类 def __init__(self,value): # 构造方法,value初始化 self.value=value A_value=A(45) # 初始化value print("value的值为{0.value}".format(A_value)) # 输出结果:value的值为45
-
数字格式化:
print("{:.2f}".format(3.1415926)) # 3.14 print("{:.3f}".format(3.456897)) # 3.457
数字 格式 输出 描述 3.1415926 {:.2f} 3.14 保留小数点后两位 3.1415926 {:+.2f} +3.14 带符号保留小数点后两位 -1 {:+.2f} -1.00 带符号保留小数点后两位 2.71828 {:.0f} 3 不带小数 5 {:0>2d} 05 数字补零 (填充左边, 宽度为2) 5 {:x<4d} 5xxx 数字补x (填充右边, 宽度为4) 10 {:x<4d} 10xx 数字补x (填充右边, 宽度为4) 1000000 {:,} 1,000,000 以逗号分隔的数字格式 0.25 {:.2%} 25.00% 百分比格式 1000000000 {:.2e} 1.00e+09 指数记法 13 {:>10d} 13 右对齐 (默认, 宽度为10) 13 {:<10d} 13 左对齐 (宽度为10) 13 {:^10d} 13 中间对齐 (宽度为10) 11 '{:b}'.format(11) '{:d}'.format(11) '{:o}'.format(11) '{:x}'.format(11) '{:#x}'.format(11) '{:#X}'.format(11)
1011 11 13 b 0xb 0XB
进制 ^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
+ 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格
b、d、o、x 分别是二进制、十进制、八进制、十六进制。
此外还可以用{}来充当转义符:
print("{0}对应的第一个位置是{{0}}".format("123456")) #第一个大括号中的0可以省略 print("{1}对应的第一个位置是{{1}}".format("123456","absdf")) # 输出结果:123456对应的第一个位置是{0} # 输出结果:absdf对应的第一个位置是{1}
-
字符串的输入:
input()
函数:
name=input('请输入名字:')
print(name)
字符串的索引和切片:
-
索引:正数索引和负数索引都行。
#正索引:01234 'acsdf' #负索引:-5-4-3-2-1
-
切片:从字符串截取部分字符组成新字符,不会对原来的字符做出改动。
[start:end:step]
start、end和step都可以省略,但是第一个冒号不能省略,此时start=0,end为最后,step为1.
st="123456789" print(st[:]) print(st[1:5:2]) print(st[1:-1]) print(st[::-1]) print(st[::-2]) ''' 输出结果: 123456789 24 2345678 987654321 97531 '''
字符串的运算:
print("*********")
st1='123' # +运算:字符串相连
st='456'
print(st+st1)
print("=========")
st2="123" # *运算符:字符串重复
print(st2*2)
print(2*st2)
print(st2)
print("=========")
we="jzasbcsak" # in和not in:判断会否在指定字符串
print('a' in we)
print("=========")
wa='123\n456' # r运算符:保持原生态,而不翻译特殊字符
print(wa)
wa=r'123\n456'
print(wa)
wa=r"sa'sfa'aa\n"
print(wa)
wa=r'''as"sd"'dad'aaa\t'''
print(wa)
print("*********")
'''
输出结果:
*********
456123
=========
123123
123123
123
=========
True
=========
123
456
123\n456
sa'sfa'aa\n
as"sd"'dad'aaa\t
*********
'''
字符串的内建函数:
-
capitalize()
函数-
语法:
str.capitalize()
-
返回值:返回一个首字母大写的字符串
-
s1="an,bn" print(s1.capitalize()) s1="An,bn" print(s1.capitalize()) s1="An,Bn" print(s1.capitalize()) s1="an,bn" print(s1.capitalize()) ''' An,bn An,bn An,bn An,bn '''
-
-
center(width)
函数-
语法:
str.center(width)
-
返回值:返回一个原字符串居中,并使用空格填充至长度 width 的新字符串
-
s="aba" print(s.center(10)) ''' aba '''
-
-
count(str,beg=0,end=len(string))
函数-
语法:
string.count(str,beg=0,end=len(string))
-
返回值:返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
-
s="aaaabccs" print(s.count("a",0,-1)) ''' 4 '''
-
-
decode(encoding='UTF-8',errors='strict')
函数-
语法:
str.decode(encoding='UTF-8',errors='strict')
-
返回值:以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 'ignore' 或 者'replace'
-
说明:encoding是要使用的编码,有关所有编码方案的列表:[标准编码](codecs — Codec registry and base classes — Python 3.9.7 documentation)
errors可以设置不同错误的处理方案。错误默认的值是'strict',这意味着编码错误会引发UnicodeError,其他可能的值是'ignore','replace','xmlcharrefreplace','backslashreplace'以及通过codecs.register_error()注册的任何其他名称。
-
s="this is a example" print(s.encode('UTF-16-le','strict')) ''' b't\x00h\x00i\x00s\x00 \x00i\x00s\x00 \x00a\x00 \x00e\x00x\x00a\x00m\x00p\x00l\x00e\x00' '''
-
-
swapcase()
函数-
语法:
str.swapcase()
-
返回值:将原字符串中的大小写翻转然后返回
-
s="This is A eXample" print(s.swapcase()) ''' tHIS IS a ExAMPLE '''
-
-
max()
函数-
语法:
max(str)
-
返回值:返回字符串str中最大的字母
-
s1="12sSd" print(max(s1)) ''' s ''' # min()返回字符串中最小的字母
-
-
replace(str1,str2,num=string.count(str1))
函数-
语法:
string.replace(str1,str2,num=string.count(str1))
-
返回值:将string中的str1替换为str1,如果num指定,则替换次数不超过num。
-
str="this is a idly person" print(str.replace('i','33',2)) ''' th33s 33s a idly person '''
-
-
split(str="",num=string.count(str))
函数-
语法:
string.split(str="",num=string.count(str))
-
返回值:以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+1 个子字符串
-
str="they\\feel\\iligated" print(str.split("\\",2)) ''' ['they', 'feel', 'iligated'] '''
-