码迷,mamicode.com
首页 > 编程语言 > 详细

Python 数据类型之字符串

时间:2019-04-17 09:48:35      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:unicode编码   对象长度   赋值   beginning   nic   most   err   oid   ide   

Python 数据类型之字符串

格式化字符串
    参数替换(类的对象,方法调用,返回一个字符串)
    >>> username = ‘root‘
    >>> password = ‘foxconn168!‘
    >>> "{0}‘s password is {1}".format(username,password)   --> 类的对象方法调用
    "root‘s password is foxconn168!"    --> 返回一个字符串
复合字段名
    使用列表作为参数,可通过列表下标索引访问其元素
    使用字典作为参数,可通过键来访问键值
    使用模块作为参数,可通过名字访问变量和函数
    使用类作为参数,可通过名字访问方法和属性
    以上参数可任意组合
    >>> a_list = [1,2,3,4,5,6]       -->  使用列表作为参数
    >>> ‘6 * {0[0]} = {0[5]}‘.format(a_list)   --> {0[0}] 第一个参数的第一个元素
    ‘6 * 1 = 6‘
    >>>
    >>> a_dict = {Name:Sam,Age:18}     --> 使用字典作为参数
    >>> "{0[Name]}‘s age is {0[Age]}".format(a_dict)  --> {0[0}] 第一个参数的第一个元素
    "Sam‘s age is 18"

格式说明符
    ‘{0:.1f} {1}‘.format(size, suffix)
        --> {0:0.1f} 0 为第一个参数;:为格式说明符;.1f为四舍五入到1位
        --> {1} 为第二个参数
    >>> a_dict
    {‘Name‘: ‘Sam‘, ‘Age‘: 18, ‘heigh‘: 65.55}
    >>> "{0[Name]}‘s heigh is {0[heigh]:.1f}KG.".format(a_dict)
    "Sam‘s heigh is 65.5KG."

其他字符串操作
    s.splitlines() --> 按行区分
    s.lower()   --> 小写字符转换
    s.count()  --> 字符个数统计
    >>> s = ‘‘‘Instance attribute dictionaries are avoided by creating
    ... class-level descriptors that intercept slot name access,and map
    ... those names to sequential storage apace in the instance.‘‘‘
    >>> s.splitlines()  -->  按行区分,返回列表
    [‘Instance attribute dictionaries are avoided by creating ‘, ‘class-level descriptors that intercept slot name access,and map‘, ‘those names to sequential storage apace in the instance.‘]
    >>> s.lower()   --> 小写字符转换
    ‘instance attribute dictionaries are avoided by creating \nclass-level descriptors that intercept slot name access,and map\nthose names to sequential storage apace in the instance.‘
    >>> print(s.lower())
    instance attribute dictionaries are avoided by creating
    class-level descriptors that intercept slot name access,and map
    those names to sequential storage apace in the instance.
    >>> s.lower().count(‘s‘)   --> 字符‘s‘出现的个数
    14
    >>>

字符串转换为字典
    >>> info = ‘name - sam / program - python / time - 2018‘
    >>> info_list = info.split(‘ / ‘)
    >>> print(info_list)
    [‘name - sam‘, ‘program - python‘, ‘time - 2018‘]
    >>> in_info_list = [x.split(‘ - ‘) for x in info_list]
    >>> print(in_info_list)
    [[‘name‘, ‘sam‘], [‘program‘, ‘python‘], [‘time‘, ‘2018‘]]
    >>> a_dict = dict(in_info_list)
    >>> print(a_dict)
    {‘name‘: ‘sam‘, ‘program‘: ‘python‘, ‘time‘: ‘2018‘}

字符串分片
    类似列表分片,返回一个新的字串
    >>> a_string = ‘Beginning Python:using Python 3.x.‘
    >>> a_string[0:5]
    ‘Begin‘
    >>> a_string[:10]
    ‘Beginning ‘
    >>> a_string[5:-5]
    ‘ning Python:using Python‘
    >>> a_string[:-5]
    ‘Beginning Python:using Python‘
    >>> a_string[9:]
    ‘ Python:using Python 3.x.‘

string  VS  bytes
    string:一个不可变(immutable)的unicode编码的字符序列
    bytes:一串由0 - 255 之间的数字序列组成的bytes 对象(ASCII 或是\x00 - \xff)
          bytes 对象是不可变的,可将bytes 对象转换为bytearray对象进行赋值(必须为0到255中的整数)
          可通过 + 连接bytes对象
          可通过下标取值(返回一个0到255中的整数)或len()计算bytes对象长度
    >>> bt = b‘acd‘     --> bytes 定义
    >>> type(bt)
    <class ‘bytes‘>
    >>> bt = b‘acd‘ + b‘\x98‘   --> bytes 使用 + 连接
    >>> bt
    b‘acd\x98‘
    >>> bt = b‘acd‘ + b‘b‘
    >>> bt
    b‘acdb‘
    >>> bt = bt + b‘\x99‘
    >>> bt
    b‘acdb\x99‘
    >>> len(bt)                 -->  bytes 对象长度计算
    5
    >>> bt[0]                   --> 通过索引下标取bytes对象的值
    97
    >>> bt[0] = 100             --> 不能直接对bytes对象赋值
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: ‘bytes‘ object does not support item assignment
    >>> btrr = bytearray(bt)    --> 将bytes对象转换为bytearray对象
    >>> btrr[0]
    97
    >>> btrr[0] = 100           --> 对bytearray对象直接赋值
    >>> btrr
    bytearray(b‘dcdb\x99‘)
    >>> bt
    b‘acdb\x99‘
    >>> type(btrr)              --> bytearray对象的类型
    <class ‘bytearray‘>
    >>> len(btrr)
    5
    >>> type(btrr)
    <class ‘bytearray‘>

string 和bytes 相互转换
    string      encode      bytes
    bytes       decode      string

    >>> a_string = ‘學習python‘
    >>> len(a_string)
    8
    >>> by = a_string.encode(‘utf-8‘)
    >>> by
    b‘\xe5\xad\xb8\xe7\xbf\x92python‘
    >>> len(by)
    12
    >>> by = a_string.encode(‘big5‘)
    >>> by
    b‘\xbe\xc7\xb2\xdfpython‘
    >>> len(by)
    10
    >>> roundtrip = by.decode(‘big5‘)
    >>> roundtrip
    ‘學習python‘
    >>> roundtrip == a_string
    True

Python 数据类型之字符串

标签:unicode编码   对象长度   赋值   beginning   nic   most   err   oid   ide   

原文地址:https://blog.51cto.com/sream/2379836

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!