美文网首页
Python基础总结-03(字符串应用)

Python基础总结-03(字符串应用)

作者: zxhlcl | 来源:发表于2018-09-28 20:51 被阅读0次

    主要内容为字符串,包括字符串的切片、格式字符串、字符串内置函数的使用等内容。

    一、字符串

    容器是一种可以存储对象的对象,常见的容器有序列、映射和集合
    字符串就是一种序列,且是不可变的有序序列

    转义字符

    1、特定意义的字符(例如:\n,\t,\f,\b ......)
    2、在字符串的最前面可以添加r或者R来阻止字符串中的转义字符转义

    str1="how are you \n fine"
    print(str1)
    str2=r"how are you \n fine"
    print(str2)
    

    获取字符

    语法:字符串[下标] --根据下标获取字符串中的字符

    str3="good good study\n day day up!"#转义字符是一个字符
    str4="  good good study\n day day up!"#制表符是一个字符
    print(str3[-11],str3[17])
    print(str4[-11],str4[18])
    

    字符串切片

    语法:
    字符串[起始下标:结束下标]--获取字符串中从起始下标开始,到结束下标前所有字符
    字符串[起始下标:结束下标:步长]--从起始下标开始,每步长获取一个,获取到结束下标前为止
    字符串[:结束下标]--从开头开始取(可是从第一个,也可是从最后一个)
    字符串[:]--全部取完
    注意:切片的时候下标可以越界

    str5="同一个世界,同一个梦想"
    print(str5[2:6],str5[6:-1])
    str6="尤文图斯、拜仁慕里黑、皇家马德里、利物浦、巴黎圣日耳曼"
    print(str6[1:10:2],str6[10:1:-2])
    str7="落霞与孤鹜齐飞,秋水共长天一色"
    print(str7[:4],str7[:6:-2])
    print(str7[-4:],str7[-4::-2])
    print(str7[:],str7[::-1]) 
    

    字符串运算

    Python中的字符串支持+、*和比较运算符
    (1)加运算
    加号两边不能一个是字符串,另一个是数字

    str1="落霞与孤鹜齐飞"
    str2="秋水共长天一色"
    print(str1+','+str2) #落霞与孤鹜齐飞,秋水共长天一色
    

    (2)乘运算

    str3="abc"
    str4="123"
    print(str3*3) #abcabcabc
    print(str3*3+str4) #先算乘,再算加  abcabcabc123
    

    (3)比较运算

    print('abc'=='abc','abc'!='acd')#判断相等
    print("a"==chr(97),"a"=="\u0061")#判断相等
    print('abcd'>'op',ord('a')>ord('o')) #比较大小:按序列比较字符的Unicode码值
    print('abc' in 'abcded','abc'in 'beabce','abc' not in 'abeced')#判断字符串的包含关系
    #判断一个字符是否是数字字符:利用Unicode表和ASCII表
    char='5'
    print('0'<=char<='9')  #判断char是否是数字
    print('a'<=char<='z' or 'A'<=char<='Z')  #判断char是否是字母
    

    (4)字符串包含关系:in 、not in

    name='albert einstein is a very great great scientist'
    substring='albert'
    print(substring not in name,substring  in name) #False True
    

    格式字符串

    在字符串的内部通过格式占位符表示字符串变化的部分,然后在后面用值来填充变化的部分

    1、百分号方式

    格式:%[(name)][flags][width].[precision]typecode

    • (name) 可选,用于选择指定的key
    • flags 可选,可供选择的值有:右对齐(+):正数的加正号,负数的加负;左对齐(-):正数前没有负号,负数前加负号
    • width 可选,占有宽度
    • .precision 可选,小数点后保留的位数
    • typecode 必选
      s,获取传入的对象_str_方法的返回值,并将其格式化到指定位置
      r,获取传入对象的_repr_方法的返回值,并将其格式化到指定位置
      c,整数:将数字转换成其unicode对应的值,10进制范围为0 <= i <=1114111
      o,将整数转换成八进制表示,并将其格式化到指定位置
      x,将整数转换成16进制,并将其格式化到指定位置
      d,将整数,浮点数转化为十进制表示,并将其格式化到指定位置
      字符串格式化符号.png
    name='小明'
    age=22
    salary=12.688
    height=170
    weight=72
    addr="四川省成都市科华北路62号"
    print("%s 的年龄是%d岁,身高是%dkg,体重是%dcm,年收入是%f万元,家庭住址是%s" % (name,age,height,weight,salary,addr))
    print("%s 的年收入是%-10.2f元"%(name,salary)) 
    
    字符串格式化辅助指令.png

    2、format方式

    name='xiaoming'
    age=22
    salary=12.688
    #三种方式
    str1='name is {name},age is {age},salary is {salary}'.format(name=name,age=age,salary=salary)
    str2='name is {},age is {}, salary is {}'.format(name,age,salary)
    str3='name is {0},age is{1}, salary is {2},the most important thing is salary is {2}'.format(name,age,salary)
    print(str1,"\n",str2,"\n",str3, sep= '')
    str4='name is {name:s},age is {age:d},salary is {salary:$>6.2f}'.format(name=name,age=age,salary=salary)
    #$>6.2f:用$填充,右对齐,宽度为6,精度为2
    #左对齐、右对齐和居中可分别使用<、 >和^
    #$表示用$符号填充
    print(str4, sep= '')
    

    内置函数

    (1)字母处理类:有返回值
    .upper() # 全部大写
    .lower() # 全部小写
    .swapcase() # 大小写互换
    .capitalize() # 首字母大写,其余小写
    .title() # 首字母大写

    name='albert einstein'
    print(name.upper(),name.lower(),name.capitalize(),name.title(),name.swapcase(), sep=',')
    

    (2)调整格式类
    .ljust(width,fill) # 获取固定长度,左对齐,右边不够用fill值补齐
    .rjust(width,fill) # 获取固定长度,右对齐,左边不够用fill值补齐
    .center(width,fill) # 获取固定长度,中间对齐,两边不够用fill值补齐
    .zfill(width) # 获取固定长度,右对齐,左边不足用0补齐

    name='albert einstein'
    print(name.ljust(20,'*'),name.rjust(20,'*'),name.center(20,'*'),name.zfill(20), sep=',')#zfill()函数只能有一个参数
    #albert einstein*****,*****albert einstein,**albert einstein***,00000albert einstein
    

    (3)字符查找类
    .find(str, beg=0 end=len(string)) # 搜索指定字符串,没有返回-1
    .rfind() # 从右边开始查找
    .index() # 同上,但是找不到会报错
    .rindex() # 从右边开始,同上,但是找不到会报错
    .count() # 统计指定的字符串出现的次数
    startswith()# 以某一个字符串开始
    endswith()# 以某一个字符串结束

    name='albert einstein is a very great great scientist'
    print(len(name)) #47
    print(name.find('einstein'),name.find('is'))#7 16
    print(name.rfind('einstein'),name.rfind('is'))#7 44
    print(name.index('einstein'),name.index('is'))
    print(name.rindex('einstein'),name.rindex('is'))
    print(name.count('e'),name.count('great'))
    print(name.startswith('albert'),name.endswith('ist'))
    

    (4)替换、连接、分割
    .join(seq) #将字符串插入到目标字符串之间
    .split('指定字符') # 按指定字符分割字符串为数组
    .replace('old','new',次数) # 替换指定次数的old为new

    sep="aaa"
    seq="bbb"
    print(sep.join(seq)) #baaabaaab
    sep="abcabcabcabc"
    print(sep.split("c"))#['ab', 'ab', 'ab', 'ab', '']
    print(sep.replace('ab','ad',2)) #adcadcabcabc
    

    (5)去空格
    .strip() # 去两边空格
    .lstrip() # 去左边空格
    .rstrip() # 去右边空格
    str.strip([chars]) 用于移除字符串头尾指定的字符(默认为空格)或字符序列

    name='\t Albert Einstein\t\n'
    print(name)
    a=name.strip()
    print(a) #Albert Einstein
    b=name.rstrip()
    b=name.lstrip()
    print(b)  #Albert Einstein
    

    (6)判断
    .isalnum() # 是否全为字母或数字
    .isalpha() # 是否全字母
    .isdigit() # 是否全数字
    .islower() # 是否全小写
    .isupper() # 是否全大写
    .istitle() # 判断首字母是否为大写
    .isspace() # 判断字符是否为空格
    =========================================================
    isdigit()、isdecimal()、isnumeric()的区别
    都不能判断小数-->'12.55' --False
    isdigit()
    True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
    False: 汉字数字
    Error: 无

    isdecimal()
    True: Unicode数字,,全角数字(双字节)
    False: 罗马数字,汉字数字
    Error: byte数字(单字节)

    isnumeric()
    True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
    False:
    Error: byte数字(单字节)
    =========================================================

    相关文章

      网友评论

          本文标题:Python基础总结-03(字符串应用)

          本文链接:https://www.haomeiwen.com/subject/iyypoftx.html