Python 数据类型之字符串,,Python 数据类
Python 数据类型之字符串,,Python 数据类
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 数据类型之字符串
评论关闭