一:常量字符串

  常量字符串用起来相对简单,也许最复杂的事情就是在代码中有如此多的方法来编写它们。

  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 对象类型详解二:字符串(上)的更多相关文章

  1. 六:python 对象类型详解二:字符串(下)

    一:字符串方法: 方法就是与特定对象相关联在一起的函数.从技术的角度来讲,它们是附属于对象的属性,而这些属性不过是些可调用的函数罢了.Python 首先读取对象方法,然后调用它,传递参数.如果一个方法 ...

  2. 三:python 对象类型详解一:数字(上)

    一:python 的数字类型: a)整数和浮点数 b)复数 c)固定精度的十进制数 d)有理分数 e)集合 f)布尔类型 g)无穷的整数精度 h)各种数字内置函数和模块 二:各种数字类型的详解 1,数 ...

  3. 十:python 对象类型详解六:文件

    一:文件 1.简介:内置open 函数会创建一个python 文件对象,可以作为计算机上的一个文件链接.在调用open 之后,可以通过调用返回文件对象的方法来读写相关外部文件.文件对象只是常见文件处理 ...

  4. 四:python 对象类型详解一:数字(下)

    一:位操作 除了一般的数学运算,python也支持c语言中的大多数数学表达式.这包括那些把整数当作二进制位串对待的操作.例如,还可以实现位移及布尔操作: >>> x = 1 > ...

  5. 七:python 对象类型详解三:列表

    一:列表简介: 1,列表可以包含任何种类的对象:数字.字符串甚至集合对象类型.列表都是可变对象,它们都支持在原处修改的操作,可以通过指定的偏移量和分片.列表方法调用.删除语句等方法来实现.关键的作用有 ...

  6. 九:python 对象类型详解五:元组

    一:元组: 1,简单介绍:元组由简单的对象组构成.元组与列表非常类似,只不过元组不能在原处修改(它们)是不可变的,并且通常写成圆括号中的一系列项.虽然元组不支持任何方法调用,但元组具有列表的大多数属性 ...

  7. 八:python 对象类型详解四:字典

    一:字典通识: 1,字典通过键而不是偏移量来读取: 2,字典是任意对象的无序集合: 3,字典可变长.异构.任意嵌套: 4,字典属于可变映射类型: 5,对象引用表(散列表): 二:实际应用中的字典: 1 ...

  8. C++11 并发指南六( <atomic> 类型详解二 std::atomic )

    C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍)  一文介绍了 C++11 中最简单的原子类型 std::atomic_flag,但是 std::atomic_flag ...

  9. ECMAScript---object对象类型详解

    普通对象:由大括号包裹起来的,由零到多个属性名和属性值(键值对)组成的 那什么是属性呢? 属性:描述当前对象特征的,属性名是当前具备这个特征,属性值是这个特征的描述(专业语法,属性名称为键[key], ...

随机推荐

  1. 自制进度条在python3下PyCharm中运行或在控制台按照目录运行

    import timescale = 50print("执行开始".center(scale//2,"-"))start = time.perf_counter ...

  2. N的多次方Python实现

    N的多次方描述编写一个程序,计算输入数字N的0次方到5次方结果,并依次输出这6个结果,输出结果间用空格分隔.其中:N是一个整数或浮点数.print()函数可以同时输出多个信息,采用如下方法可以使用空格 ...

  3. Jquery的一些基本操作

    /*获得TEXT.AREATEXT的值*/ var textval = $("#text_id").attr("value"); //或者 var textva ...

  4. leetcode1014

    这道题暴力算法,会超时: class Solution(object): def maxScoreSightseeingPair(self, A: 'List[int]') -> int: n ...

  5. Redis位图实现用户签到功能

    场景需求 适用场景如签到送积分.签到领取奖励等,大致需求如下: 签到1天送1积分,连续签到2天送2积分,3天送3积分,3天以上均送3积分等. 如果连续签到中断,则重置计数,每月初重置计数. 当月签到满 ...

  6. golang 字符串截取

    java中有SubString,那golang怎么截取字符串? str := "hello world" fmt.Print(str[:]) 以上代码输出 hello 数组,sli ...

  7. hive,分桶,内外部表,分区

    简单的word-count操作: [root@master test-map]# head -10 The_Man_of_Property.txt    #先看看数据Preface“The Forsy ...

  8. 尚硅谷springboot学习9-配置文件值注入

    首先让我想到的是spring的依赖注入,这里我们可以将yaml或者properties配置文件中的值注入到java bean中 配置文件 person: lastName: hello age: 18 ...

  9. 调用DATASNAP+FIREDAC的远程方法有时会执行二次SQL或存储过程的BUG(转永喃兄)

    调用DATASNAP+FIREDAC的远程方法有时会执行二次SQL或存储过程的BUG 1)查询会重复执行的情形:Result := DATASETPROVIDER.Data会触发它关联的DATASET ...

  10. c++复习:C++输入和输出流

    C++输入和输出流 1.I/O流的概念和流类库的结构 程序的输入指的是从输入文件将数据传送给程序,程序的输出指的是从程序将数据传送给输出文件. C++输入输出包含以下三个方面的内容: 对系统指定的标准 ...