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

posted @ 2019-10-05 11:21  后山前堂客  阅读(342)  评论(0)    收藏  举报