美文网首页
day3字符串

day3字符串

作者: Smilebest | 来源:发表于2018-08-22 23:30 被阅读14次

    一.认识字符串

    1.什么是字符串

    a.用单引号或者双引号括起来的字符集就是字符串
    'assd123~..?按键式','98k!'
    
    b.字符串中的每个单独的单元叫字符,用键盘输入的,都是字符。
    ’98k!'中的‘9’,‘8’,‘k’,‘!’就是字符
    

    2.转义字符

    • 说明:python中没有字符类型,如果要表示字符,就用一个长度是一的字符串表示,例如:'a','1'
    • 长度:指的是字符串中字符的个数,例如:’abc‘表示长度是3,'123, 你好'表示长度是7(一个空格,一个tab,都表示一个字符)
      a.常见的转义字符:
      \n-----换行
      \t------制表符(相当于tab)
      \------,隔开
      '------ '
      "----- "
      在计算字符串长度的时候,转义字符的长度是1
    poem = '床前明月光,\n疑是地上霜'
    print (poem)
    
    输出
    床前明月光,
    疑是地上霜
    
    st = '12\'25'
    print (str)
    
    输出
    12'25
    

    3.Unicode编码

    a.python中字符的编码采用的是Unicode编码
    b.Unicode是采用两个字节对一个字符进行编码(2^15),能够将世界上所有的符号进行编码
    c.Unicode编码中包含ascii码

    • 将字符转换成指定的数值,这个过程就是编码。(编码的目的是方便计算机存储),将数值转换成对应的符号的过程就是反编码(解码)

    1).将Unicode码转换成字符:chr(编码)

    print(chr(0xA48F))        ꒏
    print(chr(0x4e80))        亀
    

    2).将字符转换成Unicode编码:ord(字符)

    name1 = '陈'
    name2 = '虹'   
    name3 = '州'
    print(ord(name1),ord(name2),ord(name3)) 
    
    输出
    38472 34425 24030
    

    二、获取字符

    • 字符串实质是一个不可变的序列,序列内容是字符。一旦确定字符串,那么里面的字符和字符位置就不可变了,例如:'abc'

    1.怎么获取单个字符

    • python中的字符串,可以通过下标(索引)来获取指定位置上的字符:字符串[索引]
      说明:
      a.字符串:可以是字符串值,也可以是字符串变量
      b.[]:中括号是固定语法
      c.索引:从0开始到字符串长度减1;
      -1~负的长度(-1对应的是最后一个字符,-2对应的是倒数第二个字符)
    • 注意:索引不能越界,否则会报错(产生异常)
    str = 'abcd'   # a-->0,b-->1c-->2,d-->3
    print(str[0])                  a
    
    name = '123'   
    print (name[2])                3
    print (name[-3])               1
    print ('123'[2])               3
    

    2.获取部分字符(获取字串) --- 切片

    a.字符串[下标1:下标2] :

    从下标1开始,获取到下标2前的所有字符,从下标1开始,每次下标值加1,一直加到下标2前

    • 注意:下标1对应的位置,一定要在下标2对应的位置前
    str1 = 'hello world'
    print (str1[0:4])        hell
    print (str1[2:7])        llo w
    print (str1[2:-1])       llo worl
    print (str1[0:13])      切片时小标可以越界,越界的时候就去临界值 
    
    b.字符串[下标1:下标2:步进]:

    从下标1开始获取 ,每次下标值增加步进值,每增加一次取一个字符,直到取到下标2为止

    • 注意:1).步进如果是正数,那么下标1对应的字符的位置一定要在下标2对应的位置的前面;
      2).步进如果是负数,那么下标1字符对应的位置一定要在下标2字符对应位置的后面
    • 下标2对应的字符是取不到的
    str2 = 'hellopython'
    print (str2[0:5:2])   # hlo
    print (str2[-1:5:-2]) # nhy  
    

    c.下标的省略
    切片的时候,下标1和下标2是可以省略的

    • 下标1省略:默认从开头开始获取(开头可能是字符串的第一个字符,也可能是字符串的最后一个字符
    str3 = 'good good study,day day up'
    print (str3[:4])              good
    print (str3[:4:-1])           pu yad yad,yduts doog
    
    • 下标2省略:从下标1位置开始获取,获取到结束(结束可能是字符串的最后一个字符,也可能是第一个字符)
    print (str3[1:])                ood good study,day day up
    print (str3[3::-1])             doog
    print (str3[:])                 good good study,day day up
    print (str3[::-1])              pu yad yad,yduts doog doog
    

    练习:要求讲一个字符串中所有下标是奇数位上的字符取出来(位数从0开始算)

    str4 = '0123456789'
    print (str4[1::2])               13579
    print (str4[::-2])               97531
    

    三、字符串的相关运算

    1. + 运算符

    python支持两个字符串的相加,其效果就是将两个字符串拼接在一起,产生一个新的字符串

    • 注意:如果+的一边是字符串,那么另外一边也必须是字符串
      print ('123' + 'abc')
    str1 = 'world'
    newstr = 'hello' + ' ' + str1
    print (newstr)
    

    print(10 + 'abc') TyperError:unsupported operand typ(s) for +:'int'

    2.* 运算

    字符串*整数:字符串重复多次
    print ('abc'*2) abcabc

    3.所有的比较运算符

    str1 = 'abc'
    print ( 'abc' == str1)
    print (str1 != 'ab')
    
    • 比较大小
      str1 > str2;str1 < str2
      让str1中的每一位的字符,分别和str2中的每一位字符依次比较。直到不同为止,再看不同字符中谁的编码值大或者小
    print ('abcd' > 'abcde')
    print ('陈' > '虹') 
    print (ord('陈'),ord('虹'))
    

    4.in 和 not in

    str1 in str2:判断str1是否在str2中(str2是否包含str1 / str1是否是str2的字串)
    结果是 布尔值

    print('abc' in 'abcdef')
    print ('a' not in 'bcd')
    

    5.获取字符串的长度

    字符串的长度:指的是字符串中字符的个数

    • len()内置函数
    str3 = 'project'
    print (len(str3),len('abc 123\n'))     7 8
    
    • 补充:空串
    str4 = '  '
    str5 = "  "
    print (len(str4))       0
    print (str3[-1],str3[len(str3)-1])        t  t
    

    6.阻止转义

    在字符串的最前面添加r/R可以阻止转义

    print ('a\nb')      a
                        b
    print (r'a\nb')    a\nb
    print ('\\\n\\')   \换行\
    
    • 练习
     str7 = r'\nabc123'  求 str7[3]                  b
     str8 = 'abc123\\123'  求: str8[-5]             3
    

    四、字符串相关的方法

    python中的字符串提供了很多的内建函数

    • 字符串.函数( )
    • 注意:这些所有的函数的功能都不会影响原来字符串,而是产生一个新的字符串
      str = 'hello python'
    1.capitalize() 将字符串的第一个字符转换为大写
    newstr = str.capitalize()
    print (newstr)      Hello python
    
    2.center(width,fillchar)

    让字符串变成width对应的长度,原内容居中,剩余的部分使用fillchar的值来填充
    print ('abc'.center(8,'.')) ..abc...

    3.rjust(width,fillchar)

    让字符串变成width对应的长度,原内容靠右,剩余的部分使用fillchar的值来填充

    num = '1'
    new_num = num.rjust(3,'0')
    print (new_num)        001
    
    3.原字符串.count(str)

    判断str值在原字符串中出现的次数

    str1 = '12121212'
    print (str1.count('1'))     4
    
    4.字符串1.join(字符串2)

    在字符串2中的每个字符之间插入一个字符串1

    print ('aa'.join('0000'))           0aa0aa0aa0
    
    5.str1.replace(old,new)

    将str1中old部分全部替换成new

    new_str = 'abcdefsa'.replace('a','?')
    print (new_str)            ?bcdefs?
    

    五、python的字符串内建函数

    1 .capitalize():将字符串的第一个字符转换为大写
    str1 = 'teacher'
    print (str1.capitalize())                Teacher
    
    2 .center(width, fillchar):返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
    num = '123'
    print (num.center(8,'*'))                **123***
    
    3 .count(str, beg= 0,end=len(string)):返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
    print ('12332112'.count('1'))            3
    
    10 .isalnum():如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
    print ('12335abcd'.isalnum())            True
    print ('.........'.isalnum())            false
    
    11 .isalpha():如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False
    print ('abcde'.isalpha())                True
    print ('zxc12..'.isalpha())              False
    

    12 .isdigit():如果字符串只包含数字则返回 True 否则返回 False
    print ('13450'.isdigit()) True

    13 .islower():如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
    print ('Teacher'.islower())              False
    
    14 .isnumeric():如果字符串中只包含数字字符,则返回 True,否则返回 False
    print ('132154a'.isnumeric())            False
    
    15 .isspace():如果字符串中只包含空白,则返回 True,否则返回 False.
    print ('  1 1 2 1'.isspace())            False
    
    16 .istitle():如果字符串是标题化的(见 title())则返回 True,否则返回 False
    print ('Two'.istitle())                  True
    
    17 .isupper():如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
    print ('TWO'.isupper())                  True
    
    18 .join(seq):以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
    print('00'.join('111'))                  1001001
    
    19 .len(string):返回字符串长度
    print (len('123321123456789'))           15  
    
    20 .ljust(width[, fillchar]):返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。
    print ('123'.ljust(8,'*'))               123*****
    
    21 .lower():转换字符串中所有大写字符为小写.
    print ('TEACHER'.lower())                teacher
    
    22 .lstrip():截掉字符串左边的空格或指定字符
    print ('    123'.lstrip())               123
    print ('*****123'.lstrip('*'))           123
    
    23 .maketrans():创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
    print ('123'.maketrans('abc','789'))
    
    29 .rjust(width,[, fillchar]):返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串
    print ('123'.rjust(8,'*'))                 *****123
    
    30 .rstrip():删除字符串字符串末尾的空格.
    print ('123******'.rstrip('*'))            123 
    
    34 .strip():在字符串上执行 lstrip()和 rstrip()
    print ('***123***'.strip())
    
    35 .swapcase():将字符串中大写转换为小写,小写转换为大写 (和upper()作用一样)
    print ('ASD'.swapcase())                    asd
    print ('zxc'.swapcase())                    ZXC
    
    36 .title():返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
    print ('teacher is good'.title())           Teacher Is Good
    
    38 .upper():转换字符串中的小写字母为大写
    print ('asd'.upper())                       ASD
    
    39 .zfill (width):返回长度为 width 的字符串,原字符串右对齐,前面填充0
    print ('123'.zfill(8))                      00000123
    
    40 .isdecimal():检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false
    print ('1852asf'.isdecimal())               False
    print ('124523'.isdecimal())                True
    

    相关文章

      网友评论

          本文标题:day3字符串

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