字符串是一种有序的字符集合,用于表示文本数据。
字符串属于不可变序列,意味着不能直接修改字符串(即不能原处修改)
字符串中的字符按照从左到右的顺序,具有位置顺序,支持索引、分片等操作。
字符串常量
python字符串常量可以用下列多种方法表示:
- 单引号,‘a’、‘123’
- 双引号,“a”、“123”
- 三个单引号或者三个双引号,’’‘a’’’、""“a”""
- 带r或R前缀的Raw字符串:r’abc’、R’abc’
- 带u或U前缀的Unicode字符串:u’abc’、U’abc’
字符串都是str类型的对象,可用内置str函数来创建字符串对象,例如:
>>>x=str(123) #用数字创建字符串对象
>>>print(x)
>>>'123'
>>>type(x) #测试字符串对象类型
>>><class 'str>
>>>x=str(u'abc123') #用字符串常量创建字符串对象
>>>print(x)
>>>'abc123'
单引号和双引号
表示字符串常量时,单引号和双引号没有区别,在单引号字符串中可嵌入双引号,在双引号字符串中可嵌入单引号,例如:
>>>'123"abc'
>'123"abc'
>>>print('123"abc',"123'abc")
>123"abc 123'abc
在交互模式下,直接显示字符串时,默认用单引号表示。如果字符串中有单引号,则用双引号表示。注意,字符串打印时,不会显示表示字符串的单引号货双引号
三引号
三引号通常用于表示多行字符串(也称块字符),例如:
>>>x="""This is
a python
multiline string"""
>>>x
>'This is\n\ta python\nmultiline string'
>>>print(x)
>This is
a python
multiline string
在交互模式下,直接显示时,字符串中的各种控制字符以转义字符显示,与打印格式有所区别。
三引号的另一种作用是作为文档注释,被三引号包含的代码块作为知识,在执行时被忽略,例如:
"""这是一个python文件"""
x='123'
print(x)
>>>123
转义字符
转义字符用于表示一些不能直接输入的各种特殊字符:
转义字符 | 说明 |
---|---|
\ \ | 反斜线 |
\ ’ | 单引号 |
\ " | 双引号 |
\a | 响铃符 |
\b | 退格符 |
\f | 换页符 |
\n | 换行符 |
\r | 回车符 |
\t | 水平制表符 |
\v | 垂直制表符 |
\0 | Null,空字符串 |
\ooo | 八进制值表示ASCⅡ码对应字符 |
\xhh | 十六进制值表示ASCⅡ码对应字符 |
Raw字符串
在Raw字符串中,python不会解析其中的转义符。Raw字符串的典型应用是表示Windows系统中的文件路径,例如:
>>>mf=open('d:\temp\new.py','r')
open语句试图打开d:\temp目录中的new.py文件,python会将文件名字符串中的\t和\n处理为转义字符,从而导致执行错误,为避免这种情况,可将文件名字字符串中的反斜线表示为转义字符,如:
>>>mf=open('d:\\temp\\new.py','r')
另一种方法用Raw字符串来表示:
>>>mf=open(r'd:\temp\new.py','r')
也可以是将文件名中的反斜线用正斜线表示:
>>>mf=open('d:/temp/new.py','r')
字符串基本操作
字符串基本操作包括求字符串长度、包含性判断、连接、迭代、索引和分片以及转换等。
求字符串长度
用len函数获得字符串长度
>>>len('abcdef')
>>>6
包含性判断
用in操作符判断字符串包含关系
>>>x='abcdef'
>>>'a'in x
>True
>>>'12'in x
>False
字符串连接
字符串连接是吧多个字符串按顺序合并成一个新的字符串:
>>>'12''34''56' #空格分隔的多个字符串可自动合并
>'123456'
>>>'12'+'34'+'56' #用加法运算符将多个字符串合并
>'123456'
>>>'12'*3 #用乘法运算符创建重复的字符串
>'121212'
注意,在使用逗号分隔字符串时,会创建字符串组成的元祖:
>>>x='abc','def'
>>>x
>('abc','def')
>>>type(x)
><class 'tuple'>
字符串迭代
可用for循环处理字符串:
>>>for a in 'abc':print(a) #b变量a依次表示字符串中的每个字符
>a
b
c
索引和分片
索引是通过偏移量来获得字符串中的单个字符:
>>>x ='abcdef'
>>>x[0] #索引第一个字符
>'a'
>>>x[-1] #索引最后一个字符
>'f'
分片是利用范围从字符串中获得连续的多个字符,分片的格式:
x[start:end]
例如:
>>>x='abcdef'
>>>x[1:4] #返回偏移量为1到3的字符
>bcd
>>>x[1:]
>bcdef
>>>x[:4]
>abcd
>>>x[:-1]
>abcde
>>>x[:]
>abcdef
默认情况下,分片返回的是字符串中连续多个字符,可以增加一个补偿参数来跳过中间的字符:
x[start:end:step]
例如:
>>>x='0123456789'
>>>x[1:7:2] #返回偏移量为1、3、5的字符
>'135'
>>>x[::2] #返回偏移量为偶数的全部字符
>'02468
>>>x[7:1:-2] #返回偏移量为7、5、3的字符
>'753'
>>>x[::-1] #将字符串倒序返回
>'987654321'
转换字符串
用str来转换字符串,也可以用repr函数:
>>>str(123)
>'123'
>>>str(1.23)
>'1.23'
>>>str(2+4j)
>'(2+4j)'
>>>repr(1.23)
>'1.23'