五:python 对象类型详解二:字符串(上)
一:常量字符串
常量字符串用起来相对简单,也许最复杂的事情就是在代码中有如此多的方法来编写它们。
eg:单引号:'spam"m' , 双引号: “spa'm” , 三引号:‘’‘... spam ...'''或者 “”“... spam ..."""。
转义字符:”s\tp\na\0m“
Raw字符串:r"C:\new\test.spm"
Python3.0 中的Byte字符串:b'so\x01am'
python2.6 中的Unicode字符串: u'eggs\u0020spam'
Note:在python中,单引号和双引号是可以互换的。之所以这样做,是因为我们可以不使用反斜杠转义字符就可以实现一个字符串中包含其余种类的引号。当然也可以使用反斜杠转义字符去嵌套引号。
>>>'knight"s',"knight's" #不用转义字符的引号的相互使用
(knight"s,knight's)
另外,python 自动在任意的表达式中合并相邻的字符串常量,尽管可以用‘+’操作符来明确表示这是一个合并操作。
>>>title = "Meaning " 'of' "Life" #Implicit concatenation
>>>title
'Meaning of Life'
Note:这些字符串之间增加逗号会创建一个元祖,而不是一个字符串。并且python 倾向于打印单引号,除非字符串内已经有了单引号了。
1,用转义字符序列代表特殊字节:反斜杠用来引入特殊的字节编码,是转义序列。在交互模式下是以转义字符的形式回显的,但是print会将其解释出来:
>>>s
'a\nb\tc'
>>>print(s)
a
b c
需要注意的是在用转义字符时,\xhh 表示16进制数字,即\x之后只能跟两个数字(0-F);\ooo 表示八进制数字,即之后可以跟三个数字(0-7);在看一个字符串长度时有用。
Note:python 中,空字符不会像C语言那样去结束一个字符串。相反,Python 在内存中保持了整个字符串的长度和文本。事实上,python 没有字符会结束一个字符串。另外,python 以十六进制显示非打印的字符。
>>>s = '\001\002\0x03'
>>>s
'\x01\x02\x03' #十六进制显示
>>>len(s)
3
如果Python 没有作为一个合法的转义编码识别出在‘\’ 后的字符,它就直接在最终的字符串中保留反斜杠。
>>>x = "C:\py\code"
>>>x
'C:\\py\\code' #显示结果为\\,避免字符转义情况的发生
>>>len(x)
10
Note:除非你能记住所有的转义字符列表,才不会出现这种现象。如果希望编写明确的常量反斜杠,重复两个"\\" 或者使用raw 字符串是个不错的选择。
2,raw 字符串抑制转义:
Python 新手有时会像下面这样打开一个文件: myfile = open('C:\new\text.dat','w') 但是这里有些问题,“\n”,"\t" 在字符串中会被当作转义字符处理,这也是使用 raw 所要解决的问题。如果r(大小写均可以)出现在字符串的第一个引号的前面,它将会关闭字符转义机制。因此为了避免这种文件名的错误,记得在windows中增加字母r:
一种解决方法:myfile = open(r'C:\new\text.dat','w'')
另一种解决方法: myfile = open('C:\\new\\text.dat','w')
3,三重引号编写多行字符串块:
这是一种对编写多行文本数据来说很便捷的语法。但是在特定的地方会起到注释作用,即注释多行代码。
二:实际应用中的字符串:
1,基本操作:
字符串可以通过“+”进行合并并且可以通过“ * ”进行重复。
2,索引和分片:
字符串定义为字符的有序集合,所以我们能够通过其位置获得他们的元素。在pyhton 中,字符串中的元素是通过索引来提取的。并且python 和C语言一样,字符的偏移量是从0开始的,上界比字符串的长度小1.并且支持负偏移。偏移值为-1表示为这个字符串的最后一个元素的位置。从技术上讲,一个负偏移与这个字符串的长度相加后得到这个字符串的正偏移。所谓分片,其实是索引的一个扩展,即返回的不是一个字符串元素,而死一个子字符串。分片可以用于提取部分数据,分离出前后缀等。
在分片时,左边的偏移量作为下边界(包含下边界在内),而右边的偏移作为上边界(不包含上边界在内)。并返回一个包含了所获取元素的新的对象。二哥:
--s[i : j] 提取对应的部分作为一个序列:
--分界的边界默认为0和序列的长度,如果没有明确给出的话
--s[ : ] 获取了从偏移0到末尾之间的元素,这有效地实现了顶层 s 的拷贝。Note:一个有相同值,但是是不同内存片区的对象。
--s[ : -1] 不包括最后一个元素
3,扩展分片:第三个限制值
python 分片表达式增加了一个可选的第三个索引,用作步进。所以分片的形式变成:X[I : J : K],即每隔K个元素索引一次。K 默认为1。可以使用负数作为步进,步进-1表示分片将会从右到左进行而不是通常的从左到右。实际效果就是将序列进行反转:
>>>s = 'hello'
>>>s[ : : -1]
'olleh'
>>>
>>>
>>>s = 'abcedfg'
>>>s[5:1:-1] #以反转的顺序获得从2到5的元素
'fdec'
通过一个负数步进,两个边界的意义实际上进行了反转。之外,其实分片等同于用一个分片对象进行索引。
>>>'spam'[1 : 3]
'pa'
>>>'spam'[slice(1,3)]
'pa'
>>>
>>>'spam'[ : :-1]
'maps'
>>>'spam'[slice(None,None,-1)]
'maps'
view code
Note:为了去掉换行字符常常推荐采用line.rstrip()方法,因为这个调用将会留下没有换行字符那行的最后一个字符。
4,字符串转换工具:
int 函数将字符串转换为数字,而str 函数将数字转换为字符串表达形式。这两个也是通用的指定转换工具。类似的,float 函数也可以将字符串转换成浮点数(类似于 int 函数)。
5,字符串代码转换:
同样是转换,单个字符也可以通过将其传递给内置函数ord(),转换成对应的ASCII码,而chr()函数将会执行相反的操作。这些工具也可以用来执行一种基于字符串的数学运算:
>>>s = '' #字符串的数字运算
>>>s = chr(ord(s) + 1)
>>>s
''
>>>ord('') - ord('') #字符串转换为整数
5
6,修改字符串:
字符串为不可变序列,不能原地修改一个字符串,如果需要改变一个字符串,则需要对进行变化的原字符串赋值给一个新的字符串,并用原字符串的名字来命名。
>>>s = 'spam'
>>>s[0] = 'x'
TypeError: 'str' object does not support item assignment
五:python 对象类型详解二:字符串(上)的更多相关文章
- 六:python 对象类型详解二:字符串(下)
一:字符串方法: 方法就是与特定对象相关联在一起的函数.从技术的角度来讲,它们是附属于对象的属性,而这些属性不过是些可调用的函数罢了.Python 首先读取对象方法,然后调用它,传递参数.如果一个方法 ...
- 三:python 对象类型详解一:数字(上)
一:python 的数字类型: a)整数和浮点数 b)复数 c)固定精度的十进制数 d)有理分数 e)集合 f)布尔类型 g)无穷的整数精度 h)各种数字内置函数和模块 二:各种数字类型的详解 1,数 ...
- 十:python 对象类型详解六:文件
一:文件 1.简介:内置open 函数会创建一个python 文件对象,可以作为计算机上的一个文件链接.在调用open 之后,可以通过调用返回文件对象的方法来读写相关外部文件.文件对象只是常见文件处理 ...
- 四:python 对象类型详解一:数字(下)
一:位操作 除了一般的数学运算,python也支持c语言中的大多数数学表达式.这包括那些把整数当作二进制位串对待的操作.例如,还可以实现位移及布尔操作: >>> x = 1 > ...
- 七:python 对象类型详解三:列表
一:列表简介: 1,列表可以包含任何种类的对象:数字.字符串甚至集合对象类型.列表都是可变对象,它们都支持在原处修改的操作,可以通过指定的偏移量和分片.列表方法调用.删除语句等方法来实现.关键的作用有 ...
- 九:python 对象类型详解五:元组
一:元组: 1,简单介绍:元组由简单的对象组构成.元组与列表非常类似,只不过元组不能在原处修改(它们)是不可变的,并且通常写成圆括号中的一系列项.虽然元组不支持任何方法调用,但元组具有列表的大多数属性 ...
- 八:python 对象类型详解四:字典
一:字典通识: 1,字典通过键而不是偏移量来读取: 2,字典是任意对象的无序集合: 3,字典可变长.异构.任意嵌套: 4,字典属于可变映射类型: 5,对象引用表(散列表): 二:实际应用中的字典: 1 ...
- C++11 并发指南六( <atomic> 类型详解二 std::atomic )
C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍) 一文介绍了 C++11 中最简单的原子类型 std::atomic_flag,但是 std::atomic_flag ...
- ECMAScript---object对象类型详解
普通对象:由大括号包裹起来的,由零到多个属性名和属性值(键值对)组成的 那什么是属性呢? 属性:描述当前对象特征的,属性名是当前具备这个特征,属性值是这个特征的描述(专业语法,属性名称为键[key], ...
随机推荐
- RDD、DataFrame、Dataset
RDD是Spark建立之初的核心API.RDD是不可变分布式弹性数据集,在Spark集群中可跨节点分区,并提供分布式low-level API来操作RDD,包括transformation和actio ...
- 链接(跳转)<router-link> 和 路由实例Router
<router-link>和<router-link>传入的对象参数中包含path路径.name命名路由.params路径参数.query ?查询,并且如果提供了 path,p ...
- git openssl 模块生成 https 请求的 ssl 测试证书
1,请先确定安装了相关模块 1.1,git --version 1.2,openssl version -a 2,创建一个目录, cd 到该目录下 3,生成私钥 key 文件 openssl g ...
- react-native 集成react-native-image-crop-picker,使用相册相机功能
先是安装 和链接 npm i react-native-image-crop-picker --save react-native link react-native-image-crop-picke ...
- beego orm操蛋问题:操作都需要主键
查看bee generate appcode自动生成的代码,会发现orm操作都是以主键为依据的. 如果我不想根据主键怎么操作?用 ORM.Raw(cmd).Exec()吧,cmd=[你的mysql语句 ...
- li直接1px 像素的原因
1.由于空白节点(多由于Enter造成),li不换行就可以解决问题. Internet Explorer会忽略节点之间生成的空白节点,其它浏览器不会忽略(可以通过检测节点类型,过滤子节点) 2.完美解 ...
- js数组方法解析
js 数组有很多方法,其中有的常用,有的不常用,归纳几个常用的方法,做个总结: 1. 转换方法: 1.1 valueOf():调用这个方法会返回数组本身 <script> var arr ...
- Java面试题_简答题
作为一个大三在校生,很快就要去实习了,但总感觉自己连一个刚入门的菜鸟都不如,哎.发现自己连那个程序员的门槛都还没进,有点小伤心,不过伤心没用,努力向前才是我们现在应该做的事情. 下面是我之前在学校所从 ...
- 4.ClassLink - 一种新型的VPC 经典网络的连接方式
阿里云CLassLink文档地址:https://help.aliyun.com/document_detail/65412.html?spm=a2c4g.11186623.2.9.41a25a07F ...
- node 开始深入
一起学nodejs 讲师: matthew vscode+nodejs4.6 http://list.youku.com/albumlist/show/id_27966955.html?spm=a2h ...