zoukankan      html  css  js  c++  java
  • 内置数据结构(str)

    一、字符串(str)

    1.字符串在python2版本中为一个byte序列,在python3版本中为一个unicode序列,并且字符串是不可变的。

    sr = str()

    sr = 'string'

    sr = str()
    print(type(sr))
    #结果:<class 'str'>
    

    2.字符串也支持切片操作,所以与列表和元组一样。

    sr = 'hello world'
    print(sr[2:])
    #结果:llo world
    

    3.在python3版本中可以直接操作汉字,因为是一个unicode序列

    sr = '你好 世界'
    print(sr[0])
    #结果:你
    

    4.字符串的属性和方法

    • capitalize()方法将字符串的首字母大写。
    • title()方法是将所有单词的首字母大写。
    • lower()方法是将所有字母变成小写。
    • upper()方法是将所在字母变成大写。
    • swapcase()方法是将原来小写字母变成大写,原来大写字母变成小写。
    • center()方法按照指定的宽度居中字符串,默认用空格填充,也可以指定填充字符。
    • ljust()方法字符串左对齐,不足指定宽度时用指定字符填充(默认是空格填充)
    sr = 'hello birld'
    print(sr.ljust(80,'#'))

    #结果:hello birld#####################################################################
    • rjust()方法是将字符串右对齐,不足指定宽度时用指定字符填充(默认是空格填充)
    • zfill()方法指定字符串的宽度,不足时前导用0填充。
    sr = 'hello birld'
    print(sr.zfill(20))
    
    #结果:000000000hello birld
    
    • strip()方法是删除首尾指定的字符(默认是空白字符)。
    sr = 'ahello birlda'
    print(sr.strip('a'))
    
    #结果:hello birld
    • lstrip()方法是删除左边指定的字符(默认是空白字符)。
    • rstrip()方法是删除右边指定的字符(默认是空白字符)。
    • startswith()方法指是否以指定字符串开始,返回一个bool值。也可以指定查找的索引范围。
    sr = 'hello birlda'
    print(sr.startswith('he'))
    
    #结果:True
    • endswith()方法指是否以指定字符串结尾,返回一个bool值。
    • count()方法指查找指定的子字符串在字符串的出现多少次。
    • find()方法指最近出现的索引位置。在字符串中查找不到时,返回-1
    • rfind()方法指从右向左最近出现的索引位置。
    • index()方法指最近出现的索引位置。在字符串中查找不到时,抛出一个ValueError异常。
    • replace()方法指用新子字符串替换指定的子字符串。也可以指定要替换的次数。
    • join()方法把一个可迭代对象进行连接。
    lt = ['how', 'are', 'you']
    print(' '.join(lt))
    
    #结果:how are you
    #python中可以用加号连接两个字符串,但这种效率很低,因为会生成一个新的字符串,所以不建议加号操作。
    • 字符串格式化

    字符串在python中有两种格式化方式:

    1.print

    1. %d、%i表示整数
    2. %u表示无符号整数
    3. %o表示八进制
    4. %x、%X表示十六进制
    5. %e、%E表示科学计数法
    6. %f、%F表示浮点数
    7. %c表示单个字符
    8. %s表示一个字符串,也可以是一个类的__str__方法
    9. %r表示一个字符串,也可以是一个类的__repr__方法
    10. %a转换为一个ASCII值
    用元组形式格式化
    print('How are you %s' %('orna',))
    
    #当反复出现,或者格式化的内容很多时,可以用字典形式格式化
    print('How are you %(name)s' %{'name':'orna'})
    print('%(name)s say:How are you %(name1)s' %{'name':'orna','name1':'luscy'})
    

      

    class A:
        def __str__(self):
            return 'str'
    
        def __repr__(self):
            return 'repr'
    
    a = A()
    
    print('%r' % (a,))
    #结果为:repr
    
    print('%s' % (a,))
    
    #结果为:str

    2.format

    format方法接受多个可变位置参数和多个可变关键字参数。推荐使用此方法。

    print('I am {}'.format('orna'))
    #结果:I am orna
    print('I am {0},age {1}'.format('orna',32))
    #结果:I am orna,age 32
    print('I am {1},age {0}'.format('orna',32))
    #结果:I am 32,age orna
    print('I am {name},age {age}'.format(name='orna',age=32))
    #结果:I am orna,age 32
    

      

    class A:
        def __init__(self):
            self.x = 1
            self.y = 2
    
    
    
    a = A()
    
    print('{0.x} {0.y}'.format(a))
    #结果:1 2

    print('{ob.x} {ob.y}'.format(ob=a))
    #结果:1 2
    li = [1, 2, 3]
    print('{0[2]}'.format(li))
    #结果:3
    • 字符串的分割

    split()可以指定以具体内容进行分割,默认是用空格分割。并且可以指定一个整数来决定最多分割多少次。

    sr = 'how are you'
    print(sr.split())
    
    #结果:['how', 'are', 'you']

    rsplit()表示从右向左分割,和split功能一样并且有相同的参数。

    splitlines()表示以行为单元进行分割,可以指定是否保留换行符splitlines(True)。

    sr = '''how are you?
    I am fine,
    and you?
    '''
    
    print(sr.splitlines())
    
    #结果:['how are you?', 'I am fine,', 'and you?']

    partition()表示返回一个三元组。

    sr = 'how are you'
    print(sr.partition(' '))
    
    #结果:('how', ' ', 'are you')

    rpartition()表示从右向左,功能与partition一样返回一个三元组。  

    sr = 'how are you'
    print(sr.rpartition(' '))
    
    #结果:('how are', ' ', 'you')
    

    二、bytes

    python2中不区分bytes和string,只有在python3中在区分bytes和string。

    bytes和string的区别在于bytes是byte的序列,而string是unicode的序列。

    b = b'hello world' 
    
    c ='你好世界!'.encode()   #也可能指定编码参数,如:encode('GBK')
    

      因此,string使用encode()方法转化为bytes,bytes通过decode转化为string。也可能指定编码参数,如:decode('GBK')

    三、bytearrary

    bytearray和bytes不一样的地方在于,bytearray是可变的。

    sr = '你好 世界!'
    b = sr.encode()
    print(b)
    #结果:b'xe4xbdxa0xe5xa5xbd xe4xb8x96xe7x95x8cxefxbcx81'
    

      

    sr = '你好 世界!'
    b = bytearray(sr.encode())
    #结果:b'xe4xbdxa0xe5xa5xbd xe4xb8x96xe7x95x8cxefxbcx81'
    
    print(b.decode())
    

    四、作业

    1.对两个数字列表进行合并,并按升序排列。

    l1 = [1, 2, 3, 4]
    l2 = [2, 3, 7, 9]
    
    l1.extend(l2)
    l3 = l1.sort()
    print(l1)
    
    #结果:[1, 2, 2, 3, 3, 4, 7, 9]
    

    2.对一个字符串进行反转。

    sr = 'I love python!'
    
    sr1 = sr[::-1]
    print(sr1)
    
    #结果:!nohtyp evol I
  • 相关阅读:
    HttpContext.Current.Cache过期使用方法
    IE11下使用IE8
    Sqldbx连接oracle
    XML序列之System.Xml.Serialization
    怎样设置域名带www和不带www都可以访问
    log4net一些配置说明
    部署wcf到IIS时的问题
    spring.net学习(一) 搭建环境,实例化spring.net容器。
    WPF 多语言实现
    C# 类型转换问题
  • 原文地址:https://www.cnblogs.com/orna/p/8277849.html
Copyright © 2011-2022 走看看