Python 学习笔记06【字符串操作】
6.1 处理字符串
6.1.1 字符串字面量
Python默认是单引号开始,单引号结束。
如何在字符串中使用单引号呢 ?如下,使用双引号 或者 转义字符
6.1.2 使用双引号
1 >>> spam = "this is Alice's cat" 2 >>> spam 3 "this is Alice's cat"
6.1.3 转义字符
1 >>> spam = 'this is Alice\'s cat' 2 >>> spam 3 "this is Alice's cat"
常用转义字符
转义字符 打印为 \' '
\" "
\t 制表符
\n 换行符
\\ \
6.1.4 原始字符串
在字符串之前加上r
>>> spam = r'this is Alice\'s cat' >>> spam "this is Alice\\'s cat" >>> print(spam) this is Alice\'s cat >>>
6.1.5 用三重引号的多行字符串
多行字符串的起止是 三个 单引号 或 双引号。
三重引号之间的所有引号、换行符、回车符 都是字符串的一部分,其中的特殊字符不需要转义。
>>> spam = """ hello huahua, this is huihui's toy, it costs 13$, so don't touch it ,OK ? """ >>> spam "\nhello huahua,\nthis is huihui's toy, it costs 13$, so\ndon't touch it ,OK ?\n" #实际存储形式 >>> print(spam) # 打印形式 hello huahua, this is huihui's toy, it costs 13$, so don't touch it ,OK ?
6.1.6 多行注释
# 单行注释
三重引号:多行注释
6.1.7 字符串下表和切片
字符串可以看做是由单个字符组成的列表,每个字符都是列表的表项。
比如下字符串,截取后编程标准的json:
line = '002c7ea17f4f3bfd6025606a617caa01__150841602 {"vin":"AAK7UB5Y9IC0ZfFdMujzpDm6tLDPh9NRyWXpg4F+IiP0ECkjmeExM6MAwSdf8qlqFQ2WOm4q5Ee2Sl+9KLoto9nco/OXyFPR16yJ0AxysACnn5ik4fs=","BMWCorrelationID":"8bbd9955-d37a-11e9-bae9-3795611b5f50","lscType":"LSC_TYPE_BASIS","decoded":{"publicAttributes":[{"attrName":"lsc_timestamp_tssb","attrValue":"10.09.201903:24:49UTC","attrUnit":null},{"attrName":"window_driver_front","attrValue":"CLOSED","attrUnit":null},{"attrName":"window_passenger_front","attrValue":"CLOSED","attrUnit":null},{"attrName":"door_driver_front","attrValue":"CLOSED","attrUnit":null},{"attrName":"door_passenger_front","attrValue":"CLOSED","attrUnit":null},{"attrName":"door_lock_state","attrValue":"UNLOCKED","attrUnit":null},{"attrName":"door_driver_rear","attrValue":"CLOSED","attrUnit":null},{"attrName":"door_passenger_rear","attrValue":"CLOSED","attrUnit":null},{"attrName":"window_driver_rear","attrValue":"CLOSED","attrUnit":null},{"attrName":"window_passenger_rear","attrValue":"CLOSED","attrUnit":null},{"attrName":"window_rear","attrValue":"INVALID","attrUnit":null},{"attrName":"sunroof_state","attrValue":"CLOSED","attrUnit":null},{"attrName":"sunroof_position","attrValue":"0","attrUnit":"cm"},{"attrName":"sunroof_tilt_state","attrValue":"CLOSED","attrUnit":null},{"attrName":"hood_state","attrValue":"CLOSED","attrUnit":null},{"attrName":"trunk_state","attrValue":"OPEN","attrUnit":null},{"attrName":"lsc_trigger","attrValue":"DOORSTATECHANGED","attrUnit":null},{"attrName":"lsc_timestamp_vehicle","attrValue":"10.09.201903:24:46UTC","attrUnit":null},{"attrName":"gps_lat","attrValue":"78f65504-7973-4e16-9b70-921c3a8e6675","attrUnit":"WGS84"},{"attrName":"gps_lng","attrValue":"78f65504-7973-4e16-9b70-921c3a8e6675","attrUnit":"WGS84"},{"attrName":"heading","attrValue":"271","attrUnit":"degrees"},{"attrName":"altitude","attrValue":"30","attrUnit":"meter"},{"attrName":"position_can_be_trusted","attrValue":"TRUE","attrUnit":null},{"attrName":"lights_parking","attrValue":"OFF","attrUnit":null},{"attrName":"lights_position","attrValue":"OFF","attrUnit":null},{"attrName":"lsc_asn_version","attrValue":"1.2","attrUnit":null},{"attrName":"kombi_current_remaining_range_fuel","attrValue":"986","attrUnit":"km"},{"attrName":"mileage","attrValue":"64126","attrUnit":"km"},{"attrName":"lsc_timestamp_finalization_UTC_vehicle","attrValue":"10.09.201903:24:46UTC","attrUnit":null},{"attrName":"lsc_timestamp_finalization_local_vehicle","attrValue":"10.09.201911:24:46","attrUnit":null}],"privateAttributes":[]}}' line = line[44:]
print(line)# 即可得到标准的json
6.1.8 字符串的in 和 not in 操作符
6.2 有用的字符串方法
6.2.1 upper(), lower(), isupper(), islower()
字符串至少含有一个字母,并且所有的字母都是大写或者小写,isupper() islower()才返回True
6.2.2 isX方法
- isalpha() 返回True, 如果字符串只包含字母,并且非空
- isalnum() 返回True,如果字符串只包含字母和数字,并且非空
- isdecimal() 返回True,如果字符串只包含数字字符,并且非空
- isspace() 返回True,如果字符串只包含 空格、制表符 和 换行符,且非空
- istitle() 返回True, 如果字符串仅包含大写字符开头、后面都是小写字母的单词
6.2.3 字符串方法 startswith() 和 endswith()
6.2.4 字符串方法 join() 和 split()
join用法: 分隔符.join([列表项])
>>> ' '.join(['my','name','is','huahua']) 'my name is huahua'
split用法:待分割字符串.split(分隔符)
>>> 'my-name-is-huahua'.split('-')
['my', 'name', 'is', 'huahua']
6.2.5 用rjust(), ljust() 和 center()方法对齐文本
1 >>> 'huahua'.rjust(20, '#') 2 '##############huahua' 3 >>> 'huahua'.ljust(20,'#') 4 'huahua##############'
6.2.6 strip() rstrip() lstrip()删除单侧/双侧空白字符
strip() 有可选字符串参数,用于删除两侧/单侧特定字符
>>> '555adfasdaf555'.strip('555') 'adfasdaf'
对于单个字符,python提供了ord()函数获取字符的整数表示,chr()函数把字符的整数表示转换为对应的字符。
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
字符串的表示:
1 单引号/双引号表示
str1 = '花狗' str2 = 'dog'
2 用十六进制表示
# \u十六进制数字:表示unicode编码字符
str1 = '\u82b1\u72d7'
str1#'花狗'
3 bytes类型表示
str_bytes =b'abc'
python的字符串类型是 str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存在磁盘上,需要把str类型转换成bytes类型。
Python对于bytes类型的数据用带有b前缀 的单引号/双引号表示:x = b'ABC'
'ABC' 和 b'ABC'的区别:
前者是 字符串类型,后者是 bytes 类型。
以unicode表示的str类型字符串,可通过encode('编码方式') 编码为指定的bytes
>>> 'abc'.encode('ascii')
b'abc'
>>> '花狗'.encode('utf-8')
b'\xe8\x8a\xb1\xe7\x8b\x97'
bytes类型数据转换为str类型,通过decode('编码方式')函数:
>>> b'\xe8\x8a\xb1\xe7\x8b\x97'.decode('utf-8')
'花狗'
>>> a = '花狗'
>>> b = '花狗'.encode('utf-8')
>>> type(a)
<class 'str'>
>>> type(b)
<class 'bytes'>
>>> len(a)
2
>>> len(b)
6
a变量为str类型,每个字符站1个字节
b变量为bytes类型,每个中文字符经过utf-8编码后,占用3个字节。
字符串格式化:
像C语言一样,python通过%实现字符串的格式化。
常见的占位符有:
| 占位符 | 替换内容 |
|---|---|
| %d | 整数 |
| %f | 浮点数 |
| %s | 字符串 |
| %x | 十六进制整数 |
# -*- coding:utf-8 -*-
print('%02d-%02d' % (12, 1)) #%0(位数不够,左侧补0)2(一共2位)d
print('%.2f' % 3.1415926)
>>> print('this dog\'s name is %s, and its age is %2d' % ('花花',1.567));
this dog's name is 花花, and its age is 1

浙公网安备 33010602011771号