基础数据类型:字符串
字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。
创建字符串很简单,只要为变量分配一个值即可。字符串为不可变类型
var1 = 'Hello World!' var2 = "Python Runoob"
python3中,字符前缀
r'xxx' r/R: 非转义的原始字符串,以r开头的字符,常用于正则表达式,对应着re模块
b'xxx' b: BYTE字符串,可以使用encode('utf-8')转换为
u'xxx' u/U: 表示unicode字符串,不是仅仅是针对中文, 可以针对任何的字符串,代表是对字符串进行unicode编码。
字符串:拼接
使用'+'加号连接两个字符串,可将两个字符串拼接在一起
s1 = 'foo' s2 = 'python' print(s1 + s2)
字符串*数字,通过'*'信号连接,重复该字符串多少次
print('坚强'*8)
字符串:切片
‘[]’中括号,通过索引获取字符串中字符。第一个字符的索引为0
s = 'alexwusirritian' s1 = s[0] print(s1)
a
s = 'alexwusirritian' s1 = s[-1] print(s1)
n
截取字符串中的一部分的方法为:s[起始索引:结束索引+1:步长],顾头不顾尾
反向索引开始为-1,依次类推。
s = 'alexwusirritian' s1 = s[0:4] print(s1)
alex
s = 'alexwusirritian' s1 = s[:4] #起始索引开始,默认可以不写 print(s1)
alex
s = 'alexwusirritian' s1 = s[9:] #结束索引为末尾,默认可以不写 print(s1)
ritian
s = 'alexwusirritian' s1 = s[:5:2] #:2表示指定步长,默认为1 print(s1) aew
s = 'alexwusirritian' s1 = s[-1:-5:-1] #从后向前切片,步长为-1 print(s1)
nait
字符串:常用方法
capitalize() 首字母大写其余字母小写
s = 'alexWUsir' s1 = s.capitalize() print(s1) Alexwusir
swapcase() 大小写反转
s = 'alexWUsir' s1 = s.swapcase() print(s1)
ALEXwuSIR
title() 非字母隔开的每个单词的首字母大写
s = 'alex wusir*taibai2ritian' s1 = s.title() print(s1) Alex Wusir*Taibai2Ritian
center() 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串。默认填充字符为空格。
s1 = s.center(30,) s2 = s.center(30,'*') print(s1) print(s2)
alex wusir*taibai2ritian ***alex wusir*taibai2ritian***
upper(),lower() 全部大写和全部小写
s = 'alex wusir*taibai2ritian' s1 = s.upper() s2 = s.lower() print(s1) print(s2)
ALEX WUSIR*TAIBAI2RITIAN alex wusir*taibai2ritian
startswith(),endswith() 判断是否以指定字符开头或结尾,是返回True,否返回False
s1 = s.startswith('a') s2 = s.startswith('alex',5,len(s)) #startswith 可以指定匹配的索引范围,默认开始为0,结束为字符串的长度 s3 = s.endswith('esir') print(s1) print(s2) print(s3)
True False False
strip() 默认去除字符串前后的空格,换行符,制表符。lstrip()去除前面 rstrip()去除后面
s = ' alexWUsir ' s1 = s.strip() print(s1) alexWUsir
ss = 'abclaonanhaiq' ss1 = ss.strip('abqc') #指定字符串去除 print(ss1)
laonanhai
replace() 替换,默认替换匹配到的全部字符。
s = 'alex 分甘共苦老地方 alex 风刀霜剑卡乐芙' s1 = s.replace('alex', 'SB') s2 = s.replace('alex', 'SB',1) #只替换第一个查找到的字符 print(s1) print(s2)
SB 分甘共苦老地方 SB 风刀霜剑卡乐芙 SB 分甘共苦老地方 alex 风刀霜剑卡乐芙
split() 字符分隔,分隔后会产生一个新的列表。 str--->list
s1 = 'alex wusir taibai ritian' s2 = 'alex,wusir,taibai,ritian' s3 = 'alexwusirtaibairitian' l1 = s1.split() #默认以空格分隔 l2 = s2.split(',') #指定分隔符为',' l3 = s3.split('a') #指定分隔符为'a' l4 = s3.split('a',2) #指定分隔符为'a',并且只分隔前2次 print(l1) print(l2) print(l3) print(l4)
['alex', 'wusir', 'taibai', 'ritian'] ['alex', 'wusir', 'taibai', 'ritian'] ['', 'lexwusirt', 'ib', 'iriti', 'n'] ['', 'lexwusirt', 'ibairitian']
join() 用于将序列中的元素以指定的字符连接生成一个新的字符串。 list ----> str
l1 = ['alex', 'wusir', 'ritian'] s1 = ' '.join(l1) #默认为空格连接 print(s1,type(s1)) alex wusir ritian <class 'str'>
find() index() 通过元素找索引。index找不到会报错终止程序,而find找不到返回-1。 推荐使用find
s = 'alexwausir' s11 = s.find('e') s12 = s.find('ex') print(s11,type(s11)) print(s12,type(s12)) 2 <class 'int'> 2 <class 'int'> #多个字符,返回查找到的第一个字符的索引
s = 'alexwausir' s11 = s.find('a',1) #从下标1开始查找 print(s11) 3
isdigit() 检测字符串是否只由数字组成
str = "123456"; # Only digit in this string print str.isdigit(); str = "this is string example....wow!!!"; print str.isdigit(); True False
如何判定字符串是否为空
str=""
str2="abc"
print(not str) print(not str2) True False