1.字符串详解-python3基础知识

许多知识学了又忘,忘了又学,这次写成博客,当做学习笔记了,时常复习。

概念

序列:由其它对象组成的有序集合。字符串可以看做是单字符的字符串组成的序列,按照从左到右的顺序。
不可变对象:字符串一旦定义,则不会被改变,每次对字符串的更改操作实际是生成了新的字符串指向变量。

操作

s1 = 'abc' ;s2 = 'def'
s1+s2 = 'abcdef';s1*2 = 'abcabc'

创建

+,*

  1. s = 'abc' abc单引号创建
  2. s = "abc" abc双引号创建
  3. s = 'a"b"c' a"b"c中间插入引号
  4. s = """abc""" abc三引号创建
  5. s = 'abc''def' abcdef不加,自动拼接
    s = 'abc','def' ('abc', 'def')加了,变元组
    6.s = str() 强制类型转换

转义字符

转义字符的长度认为是一个字符。即len('\na') = 2

转义字符 意义
\(在末尾时) 续行符
\ 反斜杠\
\’ 单引号
" 双引号
\n 换行
\b 退格
\a 响铃,得在命令行才会响
\t 横向制表符
\v 纵向制表符
\r 回车
\f 换页
\0或者\000
\0yy 八进制
\xyy 十六进制

字符串前加u,b,r

s = u'xxx' 加u表示unicode编码
s = b'xxx' 加b表示ASCII码
s = r'xxx' 加r防止转义

方法

迭代

s = 'abc'
for i in s:
	print(i,end=' ')
>>>a b c

s = 'abcde'
print('abc'in s)
print('aac'in s)
>>> True False#in的结果返回布尔值

索引,切片

切片
s[start : end : step]
start缺省值为0,即从头开始
end缺省值为len(s)即到结尾
step缺省值为 1

s = 'abc123'
print(s[1],s[-3],s[-6])
>>>b 1 a#索引可以正序倒序

s = 'abc123'
print(s[:],s[3:],s[:3],s[:-1],s[::2])
>>>abc123 123 abc abc12 ac2

.mothod

方法 作用 备注
s.capitalize() 实现首字母大写,其余变成小写 made IN CHina >>> Made in china
s.casefold() 转化为小写,对德语等也有效
s.center() 字符串居中 s.center(width[, fillchar])fillchar缺省值为空格
s.count() 统计 s.count(substr[,start, end]);start>end会返回0,不会抛出异常s.count('')=len(s)+1;start,end可以为负数。
s.encode() 以指定方式编码,返回bytes类型 s.encode([encoding][,errors])encoding默认为utf-8
s.decode() 以指定方式解码 同上
s.endswith() 是否以指定字符串结尾 s.endwith(substr[,start,end])返回True或False,越界与count相同
s.expandtabs() 将tab转为空格字符 s.expandtabs(tabsize=8)默认是8个空格,从字符开始数,够8个补齐空格
s.find() 查找 s.find(str[,start,end]) 返回查找子字符串的第一个位置,找不到返回-1
s.format() 格式化 在下面字符串格式化详细解释
s.index() 索引 s.index(str[,start,end])返回查找到子字符串的第一个索引,没有则抛出异常
is系列方法 执行判断 返回True or False
s.isalnum() 字母和数字
s.isalpha() 字母
s.isdecimal() 是否仅含十进制字符(只存在unicode编码下) True: Unicode数字,,全角数字(双字节)False: 罗马数字,汉字数字Error: byte数字(单字节)
s.isdigit() 是否只由数字构成 True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字False: 汉字数字Error: 无
s.isnumeric() 只要是数字就能识别 True: Unicode数字,全角数字(双字节),罗马数字,汉字数字False: 无Error: byte数字(单字节)
s.isidentifier() 是否为标识符
s.islower() 字母是否全为小写
s.isprintable() 是否为可打印字符 含有制表符换行符之类的功能字符就返回False
s.isspace() 是否为空字符 空格,换行,回车,缩进,都是True
s.istitle() 是否为标题 首字母大写,其余字母小写,以特殊字符为分割
s.issupper() 字母是否都为大写
s.join() 以字符为间隔符组合 str.join(object)object是可迭代对象,元组,字典,列表,字符串 函数返回字符串
s.ljust() 左对齐,默认空格填充 s.ljust(lens[,str]),长度小于原字符串则返回原字符串
s.lower() 转换为小写 只针对英语字符
s.lstrip() 从左去除指定字符,默认为空格 s.lstrip([char])会从左去除子字符串char中所有元素,直到不是
s.maketrans() 返回一个字符串映射表(dic) s.maketrans(intab,outtab[,deltab]),datatbl会映射到None.参数也可以用字典
s.translate() 一般与maketrans一起使用,返回修改后的字符串
s.partition() 以指定字符串分割,返回三组 s.partition(str),如果在开头则第一个元素为空字符
s.replace() 替换字符串 s.replace(ord,new[,times])time默认是全部替换
s.rfind() 从右开始,同find
s.rindex() 从右开始索引,同index
s.rjust() 右对齐,默认空格填充
s.rapartition() 从右分割,其他同partition
s.rsplit() 从右开始分割同split
s.rstrip() 从右去除指定字符串
s.split() 以指定字符串分割字符 s.split(str[,times]) 次数默认是-1,分割所有,值得注意的是,如果分隔符在开头或者末尾,会分割出一个空字符串;返回的对象是一个列表
s.splitlines() 以换行\n,\r,\r\n作为分隔符分割 s.splitlines([keepends])keepends默认为False,不保留换行符
s.startswith() 判断是否以子字符串开头 返回True或False
s.strip() 跟lstrip一样,从两边去除
s.swapcase() 大小写进行转换
s.title() 每个单词首字母大写
s.upper() 每个字母变成大写
s.zfill() 用0填充到指定长度 s.zfill(width) 等同于s.rjust('0',width)

格式化

  1. %控制格式化
    跟C语言中的printf差不多,通过%控制输出的长度,类型
    下面通过几个例子来了解一下:

    基于元组:

    print('今天是  %d 年 %d 月 %d 日' %(2020,1,3))
    >>>今天是  202013 日
    
    tuple1 = (2020,1,3)
    print('今天是  %d 年 %d 月 %d 日' %tuple1)
    >>>今天是  202013

    基于字典:

    dic1=dict(year=2020,month=1,day=3)
    print('今天是%(year)d 年 %(month)d 月 %(day)d 日'%{'year': 2020, 'month': 1, 'day': 3})
    print('今天是%(year)d 年 %(month)d 月 %(day)d 日'%dic1)
    >>>
    今天是202013 日
    今天是202013

    格式控制:

    print('控制长度为5:"%5d"'%123)
    >>>控制长度为5:"  123"
    
    print("控制长度为5,用0填充:%05d"%123)
    >>>控制长度为5,0填充:00123
    
    #左对齐,右边补了空格	
    print("控制长度为5,左对齐:%-5dEND"%123)
    >>>控制长度为5,左对齐,0填充:123  END 
    
    #这里小数点前的整数代表的是整个长度,而不是整数部分的长度
    print("控制小数位:%08.4f"%1.2)
    >>>控制小数位:001.2000
    
    
    符号 意义
    s 字符串格式
    c 字符,int会被转化为ASCII码
    d 十进制整数,可以把二进制八进制十六进制自动转换
    i 跟d一样,没找到区别,大佬们指点一下
    u 已经废弃了,现在作用跟d相同
    o 八进制整数
    x 十六进制整数
    X 十六进制整数,字母是大写
    e 带有指数的浮点数
    E 同e,字母大写
    f 十进制浮点数
    F 同f,字母大写
    g 同e,f
    G 同E,F
    % 转义%,编码为%%
  2. .format方法格式化
    利用花括号{}来指定替换目标及要插入的参数
    无序:

    print('Today is {}--{}--{}'.format(2020,1,3))
    >>>Today is 2020--1--3
    

    有序:

    print('Today is {0}--{1}--{2}'.format(2020,1,3))
    >>>Today is 2020--1--3
    print('Today is {1}--{0}--{2}'.format(1,2020,3))
    >>>Today is 2020--1--3
    

    通过字典:

    print('Today is {years}--{months}--{days}'.format(years=2020,months=1,days=3))
    >>>Today is 2020--1--3
    

    通过列表:

    list1 = [2020,1,8]
    print('Today is {0[0]}--{0[1]}--{0[2]}'.format(list1))
    >>>Today is 2020--1--8
    

    控制格式:大体上与%相似,这里用后的语句来控制

    print('π的值是{:08.4f}'.format(3.14159286))
    >>>π的值是003.1416
    
  3. f函数

    a=1
    b=4
    print(f'a={a},b={b}')
    >>>a=1,b=4
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章