字符串是一个字符的、有序的、不可变的序列,用于存储基于文本的信息。字符串所包含的字符存在从左至右的位置顺序,不可以在原处(in-place)修改。Python没有C语言的字符和字符串之分,只有字符串。从严格意义上说,字符串是单个字符的序列,支持基于位置的操作,能够通过位置索引字符;由于字符串具有不可变性,不能对原始的字符串进行修改,也就是说,不能通过对其某一位置进行赋值而修改字符串。
一,字符串常量
字符串常量使用成对的单引号或双引号来表示,两者表示的效果是一样的。
1,在字符串常量中表示引号
如果字符串中包含单引号,可以表示为"ab'cd",如果字符串中包含双引号,可以表示为'ab"cd',
2,转义字符
\是转义字符,用于表示具有特殊意义的字符,例如,\t 表示水平制表符,\v表示垂直制表符,\n 表示换行,\r表示回车。
要在字符串中表示\,可以在字符串中使用两个转义字符:"\\",也可以用转义字符来表示单引号或双引号:"ab'cd"等价于"ab\'cd",'ab"cd'等价于'ab\"cd'。
3,Raw字符串
Raw字符串抑制转义,字符串中的文本就是字面代表的意思,在字符串的引号前面加一个小写的r,表示该字符串是Raw字符串,关闭转义,常用于表示文件的路径:
myfilepath = r'C:\folder\text.dat'
r 表示非转义的原始字符串,对于转义字符,即 \加上对应的字母,表示特殊含义的字符,比如最常见的”\n”表示换行,”\t”表示Tab等,当字符串以r开头,说明字符串中都是普通的字符,即使字符串中出现“\n”,也表示一个反斜杠字符和一个字母n,而不是表示换行了。
4,多行文本
在一般情况下,字符串中的所有字符都必须出现在同一行。如果要编写多行文本,那么字符串必须以三个单引号开头,或三个双引号开头,称作三重引号,用于表示多行文本,每行文本之间嵌入换行符(\n):
>>> ms="""I
... am
... fine"""
>>>ms
'I\nam\nfine'
5,编码
u/U:表示unicode字符串,不是仅仅是针对中文, 可以针对任何的字符串,代表是对字符串进行unicode编码,建议所有编码方式采用utf8
二,字符串的索引和分片
因为字符串是字符的有序序列,所以,可以通过位置(称作索引)获得序列中的单个字符。在Python中,字符串中的单个字符可以通过索引来提取,索引是通过中括号[n]来指定的,n是偏移量,从0开始,最大值是字符串长度-1。
>>> s='abcd'
>>> s[0],s[1],s[2]
('a', 'b', 'c')
1,索引 s[i],获得特定偏移的单个字符
正向偏移量从0开始,最大值是字符串长度-1,偏移量还可以是负值,把负偏移看作是从结束处反向计数,最后一个元素的负偏移是-1。从技术上讲,一个负偏移与这个字符串的长度相加后得到这个字符串的正偏移。
索引(s[i])获取特定偏移的元素:
第一个元素的偏移位0
负偏移索引意味着从最后或右边反向进行计数
s[0]获取第一个元素
s[-2]获取了倒数第二个元素(就像s[len(s)-2]一样)
2,分片 s[i:j],获取字符串的一个子序列
分片是字符串的子串,使用冒号来分割偏移的上下限,分片的格式是:s[start : end],返回从start开始,到end结束(不包括end)的所有字符,分片操作符的含义是: