美文网首页
2018-08-22-day03-字符串

2018-08-22-day03-字符串

作者: oxd001 | 来源:发表于2018-08-22 16:55 被阅读0次

    一.计算机在存数据的时候,都是以二进制的形式存在计算机中的(存一个数的补码)

    1.原码:数据的二进制形式

    正数的原码:最高位为符号位,正数的符号位为0,后面的是数值大小
    负数的原码:最高位为符号位,正数的符号位为1,后面的是数值大小
    例:
    10->1010->原码-0b 0 0001010
    -10->1010->原码-0b 1 0001010

    2.反码:

    正数的反码:反码和原码一样
    负数的反码:符号位不变,后面的每一位的值取反(0->1,1->0)
    例:
    10->0 0001010
    -10->1 1110101

    3.补码:

    正数的补码:补码和反码、原码一样
    负数的补码:符号位不变,反码加1
    -10->1 1110110

    4.加法器

    原码:2+-3 -->10000101
    补码:2+-3 -->00000010+11111101=11111111-->反码:11111110:原码10000001-->(-1)
    -3:10000011:11111100:11111101

    二、字符串

    1.什么是字符串

    a.在python中用单引号或者双引号括起来的字符集就是字符串
    b.字符串中的每个独立的单元我们叫做字符,例如:字符串'abc123'中的'a','b','c','1','2','3'就是字符

    2.转义字符

    注意:python中没有字符类型,如果要表示字符就是用一个长度是1的字符串表示
    长度:指的就是字符串中字符的个数,例如:"abc"-长度是3

          通过\将一些特殊的字符转换成一个具有特殊功能或者特殊意义的字符,就是转义字符
    常见的转义字符
    \n  换行
    \t  制表符(相当于tab键)
    \\  出现一个斜杠
    \'  出现’
    \"  出现”
    在计算字符串长度的时候,字符串的长度是1
    

    3.Unicode编码

    python中字符的编码采用Unicode编码
    将字符转换成指定的数值,这个过程就是编码。(编码的目的是方便计算机存储)
    将数值转换成对应的符号的过程就是反编码(解码)
    unicode是采用两个字节对一个字符进行编码,Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。目前的Unicode字符分为17组编排,0x0000 至 0x10FFFF,每组称为平面(Plane),而每平面拥有65536个码位,共1114112个。然而目前只用了少数平面。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。
        a).将Unicode码转换成字符:chr(码)
            print(char(0x4E00))
            print(char(0x4E01))
        b).将字符转换成Unicode编码:ord(字符)
            print(hex(ord("你")))
    

    三、获取字符串

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

    1.怎么获取单个字符

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

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

    字符串[下标1:下标2]:从下标1开始获取,获取到下标2前的所有的字符:左包右不包

        str2="hello world"
        print(str2[0:4])
    

    注意:下标1对应的位置一定要在下标2对应的位置的前面
    切片时下标可以越界,越界的时候就取临界值
    下标1的值<下标2的值

    切片方法2:
    字符串[下标1:下标2:步进]
    例子:

        str="123456789"
        print(str[0:10:2])
        13579
    

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

        print(str[-1:1:-2])
        9753
    

    注意:
    a.步进如果是正数,那么下标1对应的字符的位置一定要在下标2对应的位置的前面
    步进是负数,那么下标1对应的位置一定要在下标2对应的位置的后面
    b.下标2对应的字符是取不到的

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

        print(str2[-2:-1])
    

    如果下标1不写,默认从开头(可能是字符串的第一个字符也可能是最后一个字符,主要是看步进的值)开始获取,如果下标2不写默认到字符串结尾(可能是字符串的第一个字符,也可能是字符串的最后一个字符,主要看步进)

      print(str[:])  #123456789
        print(str[::-1])        #987654321
        print(str[-1::-1])      #987654321
        print(str[:5:1])        #12345
        print(str[:5:-1])       #987
        print(str[:4])      #1234
        print(str[2:])      #3456789
    

    如果下标1和下标2都不写,则相当于复制一个新的字符串,如果步进为-1,则相当于是反转复制字符串
    练习:要求将一个字符串中的所有奇数位上的字符获取出来

        print(str[1::2])    #2468
    

    四、字符串的相关运算

    1.+ 运算符

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

        print('abc'+'123')  #abc123
    

    注意:如果+的一边是字符串,那么另一边也必须是字符串

    2.* 运算符

    格式:
    字符串 * 整数:字符串重复多次

        print('abc' * 3)    #abcabcabc
    

    3.支持所有的比较运算符

        print("abc"=="abc") #True
        print("abc">"abd")  #False
        print("abc"<"abd")  #True
        print("abcd'>"abcde")   #False
    

    一个字符一个字符相比,比较到不一样为止。比较的是每一位的字符的Unicode值

         print('一'<'丁') #True
    

    4.in 和not in

    str1 in str2:判断str1是否在str2中(str2是否包含str1/str1是否是str2的子串),结果是bool值

    5.获取字符串的长度

    字符串的长度指的是字符串中字符的个数
    内置函数len()

        len("12344")    #5
        len("12345\n")  #6
    

    空串:长度为0

        a=''
        b=""
    

    6.阻止转义

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

        print(r'a\nb')  #a\nb
        print(R'a\nb')  #a\nb
        print(len(r'a\nb\\'))   #6
    

    练习:

        str1 = r'\nabc123'  求str1[3]    #b
        str2 = 'abc123\\123'    求str2[-5]   #3
    

    五、字符串相关的方法

    python为字符串提供了很多的内建函数
    字符串.函数()
    注意:这些所有函数的功能都不会影响原来的字符串,而是产生一个新的字符串

    1.capitalize()

            #将字符串的第一个字符转换为大写
        str = 'hello python'
        newstr = str1.capitalize()
        print(newstr)   #Hello python
    

    2.center(width,fillchar)

    #返回一个指定width居中的字符串,fillchar是填充字符,默认是空格
        print("abc".center(40,'&'))
        #&&&&&&&&&&&&&&&&&&abc&&&&&&&&&&&&&&&&&&&
    
    #说明;让字符串变成width对应的长度,原内容居中,剩余的部分使用fillchar的值来填充
    

    3.rjust(width,fillchar)

    #让字符串变成width对应的长度,原内容靠右,剩余的部分使用fillchar的值来填充
        print("abc".rjust(20,">"))  #>>>>>>>>>>>>>>>>>abc
        print("1".rjust(3,'0'))     #001
    

    4.count(str)

        #判断str值在原字符串中出现的次数
        print('abcaaa'.count('a'))  #4
    

    5.join()

    str1.join(str2):在str2中的每个字符之间插入一个str1

        print('+'.join("abc"))      #a+b+c
    

    6.replace()

    str1.replace(old,new):将str1中的old全部替换成new

        print("abcda".replace('a','$')) #$bcd$
    

    7.endswith(suffix, beg=0, end=len(string))

    检查字符串串是否以 obj 结束,如果beg 或者 end 指定则检查指 定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
    其中suffix表示要检查的结尾字符串,beg和end如果默认不写则是比较全部字符串。如果beg和end不为0,那么end必须大于beg。

    print("hello world".endswith('ld'))
    print("hello world".endswith('l'))
    print("hello world".endswith('l',7,10))
    '''
    结果:
    True
    False
    True
    '''
    

    8.expandtabs(tabsize=8)

    把字符串中的tab转换成空格,tab符号默认空格是8个

    str1='  123   '
    print(str1.expandtabs(tabsize=8))
    
    
    
    图片.png

    9.find(str, beg=0 end=len(string))

    检测 str 是否包含在字符串串中,如果指定范围 beg 和 end ,则 检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1

    print("hello world".find('l'))
    print("hello world".find('a'))
    '''
    结果:
    2
    -1
    '''
    

    注意:如果字符串有多个要寻找的字符串,那么返回要寻找的字符串第一次出现的值

    10.index(str, beg=0, end=len(string))

    和find()方法一样,只不过如果str不在字符串中会报⼀个异常.

    print('hello world'.index('a'))
    
    图片.png
    print('hello world'.index('l'))
    
    图片.png

    11.isalnum()

    如果字符串里面至少有一个字符,并且所有的字符都是unicode编码但不包括ascii里面除字符和数值的字符则返回True,否则返回False

    print('aᥤ'.isalnum())
    '''
    结果:True
    '''
    
    
    print('!~a'.isalnum())
    '''
    结果:False
    '''
    

    12.isalpha()

    如果字符串里面至少有一个字符,并且所有字符都是unicode编码,但是不是ascii码里面非字母的部分则为True,否则为False

    print('h中ᥤ'.isalpha())
    '''
    结果:True
    '''
    
    print('3!w'.isalpha())
    '''
    结果:False
    '''
    

    13.isdigit()

    如果字符串只包含数字则返回 True 否则返回 False..

    print('1一'.isdigit())
    '''
    结果:False
    '''
    
    print('1'.isdigit())
    '''
    结果:True
    '''
    

    14.islower()

    如果字符串中包含一个区分大小写的字符,并且所有这些 (区分大小写的)字符都是小写,则返回 True,否则返回 False

    print('哈哈h'.islower())
    '''
    结果:True
    '''
    
    print('bBd'.islower())
    '''
    结果:False
    '''
    

    15.isnumeric()

    如果字符串中只包含数字字符,则返回 True,否则返回 False(单个字符表示数字都行)

    print('1一壹'.isnumeric())
    '''
    结果:True
    '''
    
    print('h1'.isnumeric())
    '''
    结果:False
    '''
    

    16.isspace()

    如果字符串中只包含空白,则返回 True,否则返回 False.

    print('  '.isspace())
    '''
    结果:True
    '''
    
    print(' s'.isspace())
    '''
    结果:False
    '''
    

    17.istitle()

    如果字符串是标题化的(见 title())则返回 True,否则返回 False

    print('Hello World'.istitle())
    '''
    结果:True
    '''
    
    print('Hello world'.istitle())
    print('你好'.istitle())
    '''
    结果:False
    '''
    

    注意:完全标题化是所有单词首字母大写

    18.isupper()

    如果字符串中包含至少⼀一个区分大小写的字符,并且所有这些 (区分⼤大小写的)字符都是大写,则返回 True,否则返回 False

    print('hH'.isupper())
    '''
    结果:False
    '''
    
    print('不H'.isupper())
    '''
    结果:True
    '''
    
    

    19.len(string)

    返回字符串的长度

    print(len('s1\\'))
    '''
    结果:3
    '''
    

    20.lower()

    转换字符串中所有大写字符为小写.

    print('HaH'.lower())
    '''
    结果:hah
    '''
    

    21.lstrip()

    截掉字符串左边的空格或指定字符

    print('   hello world ')
    
    图片.png

    22.maketrans()

    创建字符映射的转换表,对于接受两个参数的简单的调用方 式,第一个参数是字符串,表示需要转换的字符,第二个参数 也是字符串表示转换的⽬目标

    dic={'e':'w'}
    
    print('hello'.maketrans(dic))
    
    图片.png

    23.max()

    返回字符串 str 中最大的字母。

    print(max('max中'))
    '''
    结果:中
    '''
    

    24.min()

    返回字符串 str 中小的字母,中文也行

    print(min('max中'))
    '''
    结果:a
    '''
    

    25.rfind(str, beg=0,end=len(string))

    类似于 find()函数,不过是从右边开始查找.

    print('hello world'.rfind('d'))
    '''
    结果:10
    '''
    

    26.rindex( str, beg=0, end=len(string))

    类似于 index(),不过是从右边开始.

    print('hello  world'.rindex('w'))
    '''
    结果:7
    '''
    

    27.rstrip()

    删除字符串字符串末尾的空格

    print('hello   '.rstrip())
    
    图片.png

    28.split(str="", num=string.count(str))

    num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符

    lst='a+b+c+d'.split('+',2)
    print(lst)
    
    '''
    结果:['a', 'b', 'c+d']
    '''
    

    29. startswith(str, beg=0,end=len(string))

    检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。

    print('abc'.startswith('a'))  #True
    print('abc'.startswith('b'))  #False
    

    30.strip([chars])

    在字符串上执行 lstrip()和 rstrip()

    print('  abc  '.strip())
    
    图片.png

    31.swapcase()

    将字符串中大写转换为小写,小写转换为大写

    print('abcABC'.swapcase())  #ABCabc
    

    32.upper()

    转换字符串中的小写字母为大写

    print('abc'.upper())  #ABC
    
    

    33.zfill(width)

    返回长度为 width 的字符串,原字符串右对齐,前面填充0

    print('abc'.zfill(20))  #00000000000000000abc
    

    34.isdecimal()

    检查字符串是否只包含十进制字符,如果是返回 true,否则返 回 false。

    print("10".isdecimal())  #True
    print('10x'.isdecmal())  #False
    

    35.translate(table, deletechars="")

    根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中

    36.splitlines([keepends])

    按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表, 如果参数 keepends 为 False,不包含换行符,如果为 True,则 保留留换行符。

    相关文章

      网友评论

          本文标题:2018-08-22-day03-字符串

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