2017-11-08 13:38:26 647浏览
String字符串是Python中最常用的数据类型了,Python不支持单字符类型,所以单字符在Python中也作为字符串。
书写一个string:
#推荐先复制到pycharm执行代码
str_single_quotes = '斯人若彩虹,遇上方知有.'#用单引号
str_double_quotes = "斯人若彩虹,遇上方知有."#双引号
str_triple_quoted = '''斯人若彩虹,遇上方知有.'''#三个引号
print(str_single_quotes,str_double_quotes,str_triple_quoted,sep ='\n')
#如果在字符串中用到引号,可以这样处理
s1 = 'allows embedded "double" quotes'#单引号与双引号套用
s2 = "allows embedded 'single' quotes"
s3 = 'can use \'\\\''#用\表示转义,也是最常用的方法
print(s1,s2,s3,sep = '\n')#一句string中用到多行输入可以这样处理
s_r1 = '''the first line
the second line'''the second line'''#三个引号的string支持多行内容
s_r2 = 'the first line\nthe second line'#用到\n作为转义后换行符
print(s_r1,s_r2,sep ='\n')
string的基础操作:
#请先执行看结果
str1 = '斯人若彩虹'
str2 = '遇上方知有'
str3 = '斯人'
print(str3 in str1) #in返回bool值,判断前一个str是否在后一个str中
print(str1+','+str2) #+号连接两个string
print(str1*2) #*一个整数可以把string翻倍的效果
print(str1>str2) #<, >符号可以进行字符串比较
#至于这个大小怎么比较的,简单说一下,可以自己了解print(ord(str1[0]),ord(str2[0]))
#从0位置开始往后比较,通过内置函数ord()获得每个字符的编码进行大小比较,先停止迭代的小#也就是前面都一样的话,短的那个string小
string的下标操作:
#请先执行看结果#
首先要知道Python内置函数len(),可返回对象的长度
s = '斯人若彩虹,遇上方知有.'print(len(s)) #12#
其次要知道,string是序列,可迭代,也就是说string可以用for遍历,也有下标操作# 斯| 人 | 若| 彩| 虹| , | 遇 | 上| 方| 知| 有|.
# 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9| 10| 11
#-12|-11|-10|-9 |-8 |-7 |-6 |-5 |-4 |-3|-2 | -1s_l1 = s[3:5] #注意区间的左闭右开,也就是获取s[3]s[4],s[5]不包括
s_l2 = s[-4:-1] #注意从左向右,下标从0开始,从右向左,下表从-1开始
s_l3 = s[:6] #左面可省略开始位置,默认为0开始
s_l4 = s[-6:] #右面可省略结束位置,默认是以len(string)
s_l5 = s[:] #知道了前后可省略,我们便可以这样表示整个string
s_l6 = s[::2] #除了开始和结束,还有第三个参数叫步长,默认是1
s_l7 = s[::-1] #知道了步长,我们便可以最简单的方式反转这个
stringprint(s_l1,s_l2,s_l3,s_l4,s_l5,s_l6,s_l7,sep='\n')
string常用的操作:
#请先执行看结果
#为了方便处理#把demo换成英文版:but every once in a while when you meet someone,nothing will compare.sE = 'but every once in a while when you meet someone,nothing will compare.'s_length = len(sE) #len()返回string长度
print(s_length)
s_lst = sE.split(',') #split()按照指定字符进行分割,默认返回数组
print(s_lst) #如果发现结果和预期不一样,注意一下是否是中英文的符号问题
s_join = '@'.join(s_lst) #join(),注意这个使用的形式,按照前面指定字符进行链接
print(s_join)
s_lst1 = sE.split() #默认按照空格分割
print(s_lst1)
s_join1 = '@'.join(s_lst1)
print(s_join1)
sE_tmp = '\t'+sE+'\n'
sE_r1 = sE_tmp.strip() #strip是去掉string前后的空白符如'\n','\t',空格
sE_r2 = sE_tmp.rstrip() #去最掉右端的
sE_r3 = sE_tmp.lstrip() #去最掉左端的
#strip可用于...比如读取文本后去掉每一行结束的换行符
print(sE,sE_tmp,sE_r1,sE_r2,sE_r3,sep = '\n')
s_times1 = sE.count('e') #count返回目标字符在string中出现的次数
s_times2 = sE.count('e',4,9) #后面两个参数是指定范围,默认是[0,len(string))
print('e:',s_times1)
print('e in every:',s_times2)
s_replace1 = sE.replace('e','E') #把string中第一个字符参数处替换为第二个参数
s_replace2 = sE.replace('e','E',4) #第三个参数是指定替换不超过该次数
print(sE,s_replace1,s_replace2,sep='\n')
#从sE不变可以看出Python中string的不可变
#凡是对string本身进行变化的操作都会返回一个变化后的副本,而非直接更改原string,这一点还是要多注意的
s_f = s_lst[1]
s_f1 = s_f.capitalize() #string的第一个字符大写
s_f2 = s_f.upper() #string所有字母大写
s_f3 = s_f2.lower() #string所有字母小写
s_f4 = s_f.title() #string每个单词首字母大写
s_f5 = s_f.swapcase() #string中大写变小写,小写变大写
print(s_f,s_f1,s_f2,s_f3,s_f4,sep='\n')
#python新特性里面给了一个casefold()操作
#文档里的demo
# s = 'ß'
# s.lower() # 'ß'
# s.casefold() # 'ss'
#emmm...lower适应ASCII,casefold也支持Unicode
#处理英文字母用lower就够了,其他可自行了解
print(s_f.isalpha()) #至少一个字符且全是字母
print(s_f.isalnum()) #至少一个字符且全为字母或数字
print(s_f.isdigit()) #至少一个字符且为数字
print(s_f.islower()) #至少含有一个区分大小写的字符,且是这些字符都是小写
print(s_f.isupper()) #至少含有一个区分大小写的字符,且是这些字符都是大写
print(s_f.isspace()) #是否只含有空格
#通常这些判断对string中目标的字符或部分进行使用,如
s_demo = 'a1 b2 c3'
for i in s_demo: #字符串可迭代
if(i.isdigit()): #判断字符类型
print(i,end='') #输出目标字符
print(s_f.find('com')) #找到目标则返回其开始的下标
print(s_f.find('@')) #找不到目标则返回-1
#与find方法类似的还有index,区别是index找不到目标的话会返回一个异常,也就是错误提示
#一般只是判断存在与否的话,推荐使用关键字 in
print(s_f.endswith('compare')) #判断是否以目标字符串结尾
print(s_f.startswith('nothing')) #判断是否以目标字符串开始
#整理了写很常用的方法吧,还有其他的方法大家可以自行看一些文档
数字格式输出描述
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)
以上就是扣丁课堂解读Python基础教程视频之String字符串的详细介绍。当然参加我们的Python培训课程,可以更快速、系统全面的掌握Python从入门到精通知识。最后也欢迎大家在课程评论区指出不足的地方。我们会慢慢改进的,想要了解更多请关注扣丁学堂python培训官网,另有专业的老师和与时俱进的课程体系定会让你学有所成,助你实现高薪梦想,最好关注扣丁学堂的官网,大量的python视频教程供学员观看学习,喜欢就快行动吧。