字符串类型
str类型:python3中所有字符串的类型为str类型
bytes类型:把字符串str经过encode 转换为字节字符串,即bytes类型
a='hello'
type(a) # <class 'str'>
type(a.encode('utf-8')) #<class 'bytes'>
type(a.encode('gbk')) #<class 'bytes'>
字符串运算
a=‘hello’ b=‘Python’
操作符 | 描述 | 实例 |
---|---|---|
+ | 字符串连接 | a+b 输出结果:‘helloPython’ |
+ | 重复输出字符串 | a*2 输出结果:‘hellohello’ |
[] | 通过索引获取字符串中字符 | a[1] 输出结果:‘e’ |
[:] | 截取字符串中的一部分 | a[1:4] 输出结果:‘ell’ |
in | 成员运算符-如果字符串中包含给定的字符串返回True | ‘H’ in a 输出结果:True |
not in | 成员运算符-如果字符串中不包含给定的字符串返回True | ‘M’ in a 输出结果:True |
字符串格式化
符号 | 描述 | 实例 |
---|---|---|
%c | 格式化字符及其ASCII码 | ‘%c’%67 输出:‘c’ ‘%c’%‘c’ 输出:‘c’ |
%s | 格式化字符串 | ‘%s’%‘addd’ 输出 ‘addd’ ‘%s’%123 输出 ‘123’ |
%d | 格式化整数 | ‘%d’%123 输出’123’ |
%u | 格式化无符号整数 | ‘%u’%123 输出’123’ |
%o | 格式化无符号八进制 | ‘%o’%9 输出’11’ |
%x | 格式化无符号十六进制 | ‘%x’%15输出’f’ |
%X | 格式化无符号十六进制 | ‘%x’%15输出’F’ |
%e | 用科学计数法 | ‘%e’%15输出’f’ |
%f | 格式化浮点数,可指定小数点后的位数,默认保留6位ke | ‘’%.2f’%1.2222222222 输出:‘1.22’ |
Template
Template属于string中的一个类,$identifier 变量由一个占位符替换(key),key去匹配变量 “identifier”
from string import Template
s=Template('There are ${key1} ${key2} Quotaions Symbols')
print(s.substitute(key2='Python',key1=3))
#输出 There are 3 Python Quotaions Symbols
常用字符串操作
- S.strip([char]) 函数
- 将字符串的左右[char]去除
- 默认是把S中前后所有的空白字符全部去除,包括’\n’,’\t’ ,’\r’ ,’ '等不可见字符串
- 返回处理后的结果
- 原字符串并未改变
- lstrip() 将字符串的左边字符内容去除
- rstrip() 将字符串的右边字符内容去除
s=' boy '
d=s.strip()
#'boy'
s='*boy*'
d=s.strip('*')
#'boy'
s=' boy '
d=s.lstrip()
#'boy '
s='boy *****'
s.rstrip('*')
#'boy '
- S.lower()
- 将字符串转变成小写
- 返回小写字符串
- 原字符串未改变
s='ABCDEF'
d=s.upper()
#'abcdef'
- S.upper()
- 将字符串转变为大写
- 返回大写字符串
- 原字符串未改变
s='abcdef'
d=s.upper()
#'ABCDEF'
- S.swapcase()
- 将字符串大小写互换
- 返回互换后的字符串
- 原字符串未改变
s='AbCdEf'
d=s.swapcase()
#'aBcDeF'
- S.capitalize()
- 将字符串的首个字母转换未大写
- 返回转换后的字符串
- 原字符串未改变
s='abcdwf ww'
d=s.capitalize()
#Abcdwf ww
- String.capwords(s)
- 将字符串中的每个单词首字符转换为大写
- string模块中的方法,利用split()函数,capitalize()、最后用join()函数实现
- 返回转换后的字符串
- 原字符串未改变
import string
s='a b c'
d=string.capwords(s)
#'A B C'
- S.ljust(width,[fillchar]) 、S.rjust(width,[fillchar])
- 将字符串按照width宽度输出,并且左对齐,不足部分用fillchar填充,默认为空格
- 返回对齐后的字符串
- 原字符串未改变
s='123abc'
s.ljust(10,'*') #'123abc****'
s.rjust(10,'*') #'****123abc'
s.rjust(10) #' 123abc'
- S.center(width,[fillchar])
- 将字符串按照width居中对齐
- 返回对齐后的字符串
- 原字符串未改变
s='123abc'
s.center(10,'*') #'**123abc**'
- S.zfill(width)
- 将字符串按照width输出,并且右对齐,不足部分用零补齐
- 返回对齐后的字符串
- 原字符串未改变
s='123abc'
s.zfill(20) #'00000000000000123abc'
- S.find(substr,[start,[end]])
- 在指定字符串范围内,查找子字符串出现的位置
- S中存在substr,则返回substr的第一个字母的位置,否则返回-1
s='I am a boy'
s.find('a') #2
s.find('a',3) #5
s.find('a',6,7) #-1
- S.index(substr,[start,[end]])
- 在指定字符串范围内,查找子字符串出现的位置
- S中存在substr,则返回substr的第一个字母的位置,否则会返回一个错误
s='I am a boy'
s.index('boy',1) #7
s.index('boy',1,13) #7
s.index('boy',1,8) #substring not found
- S.replace(oldstr,newstr,[count]]
- 实现替换指定字符串
- 返回替换后的字符串
- 原字符串未改变
s='boy boy boy'
s.replace('b','*') #'*oy *oy *oy'
s.replace('b','*',1) #'*oy boy boy'
- S.split([sep,[maxsplit])
- 用指定字符串将字符串分割
- sep,分割符,maxsplit 分割的次数,默认的分割符未空白字符
- 返回分割后的列表
- 原字符串未改变
s='1 2 3 4 5 6 7'
s.split() #['1', '2', '3', '4', '5', '6', '7']
s='1*2*3*4*5*6*7'
s.split('*',3) #['1', '2', '3', '4*5*6*7']
s.split()[1] #'2'
s='boy*boy*boy'
s.rsplit('*') #['boy', 'boy', 'boy']
s.rsplit('*',1) #['boy*boy', 'boy']
- S.join(list)
- 将列表用字符串s拼接为新的字符串
- 返回拼接后的字符串
s=['Brazil','Russia','Indai','China']
''.join(s) #'BrazilRussiaIndaiChina'
'*'.join(s) #'Brazil*Russia*Indai*China'
- S.startwith(substr)
- 判断字符串是否以某个字符串为开头
- 返回True False
name='Swaroop'
if name.startswith('Swa'):
print('Yes')
else:
print('No')
- S.endswith(substr)
- 判断字符串是否以某个字符串为结束
- 返回True False
name='Swaroop'
if name.endswith('p'):
print('Yes')
else:
print('No')
- S.isalpha()
- 判断字符串是否全部有字母组成
- 返回True False
name='Swaroop'
if name.isalpha():
print('Yes')
else:
print('No')
- S.isalnum()
- 判断字符串是否全部有字母或数字组成
- 返回True False
alnum='123abc'
if alnum.isalpha():
print('Yes')
else:
print('No')
- S.isdigit()
- 判断字符串是否全部由数字组成
- 返回True False
alnum='123abc'
if alnum.isalpha():
print('Yes')
else:
print('No')
- S.isspace()
- 判断字符串是否全部由空格组成
- 返回True False
s=' '
if s.isspace():
print('Yes')
else:
print('No')
- S.islower()
- 判断字符串是否全部是小写字母
- 返回True False
a='abcdef'
if a.islower():
print('Yes')
else:
print('No')
- S.isupper()
- 判断字符串是否全部是小写字母
- 返回True False
a='abcdef'
if a.isupper():
print('Yes')
else:
print('No')
- S.count(substr,[start,[end])
- 统计在字符串范围内出现指定字符串的次数
- 返回统计字符串的个数,没有返回0
s='boy boy boy'
s.count('boy') #3
s.count('b',3,6) #1
s.count('dd') #0
注:整理于光荣之路吴老的pdf