python 3 字符串总结

Python 3字符串总结

一 概要

字符串是一种有序的字符集合,用于表示文本数据。字符串的字符可以是ASCII字符,各种符号以及各种Unicode字符。严格意义上,字符串属于不可变序列,意味着不能直接修改字符串(即不能原处修改)。字符串中的字符按照从左到右的顺序,具体位置顺序,支持索引,分片等操作。


二 字符串常量

Python中字符串常量可以用下列多种方式表示。

  •  单引号: 'a'、'123'、'abc'。
  •  双引号:   "a"、"123"、"abc"。
  •  三个单引号或三个双引号:'''Python code'''、"""Python string""",可以表示多行字符。
  • 带r或R前缀的Raw字符串:r'abc\n123'、R'abc\n123'。
  • 带u或U前缀的Unicode字符串:u'asdf'、U'asdf'。

字符串都是str类型的对象,可用内置的str函数来创建str字符串对象。列如:

>>> x=str(123)  #用数字创建字符串对象
>>> print(x)
123
>>> type(x)   #测试字符串对象类型
<class 'str'>
>>> x=str(u'abc12')  #用字符串常量创建字符串对象
>>> x
'abc12'

1.单引号与双引号

在表示字符串常量时,单引号和双引号没有区别。在单引号字符串中可嵌入双引号,在双引号字符串中可嵌入单引号,但不能在双引号中嵌入双引号,单引号中嵌入单引号。例如:

>>> '123"abc'
'123"abc'
>>> "123'abc"
"123'abc"
>>> print('123"abc',"123'abc")
123"abc 123'abc
>>> "123"abc"
  File "<stdin>", line 1
    "123"abc"
           ^
SyntaxError: invalid syntax
>>> '123'abc'
  File "<stdin>", line 1
    '123'abc'
           ^
SyntaxError: invalid syntax

在交互模式下,直接显示字符串时,默认用单引号显示。如果字符串中有单引号,则用双引号表示。注意,单引号或双引号不会在打印时显示。


2.三引号

三引号通常用于表示多行字符串(也称块字符)。例如:

>>> x="""This is
... a Python
... example"""
>>> x
'This is\na Python\nexample'
>>> print(x)
This is
a Python
example

三引号一般会用于作为文档注释,在执行时被忽略。


3.转义字符

转义字符 说明  
\\ 反斜线
\' 单引号
\"  双引号
\a 响铃符
\b 退格符
\f 换页符
\n 换行符
\r 回车符
\t 水平制表符
\v 垂直制表符
\0 Null,空字符串

三 字符串的基本操作

字符串基本操作包括求字符串长度、包含性判断、连接、迭代、索引和分片以及转换

1.求字符串长度

字符串长度指字符串中包含的字符个数,可用len函数获得字符串长度。例如:

>>> len('abcdefg')
7

2.包含性判断

字符串为字符的有序集合,所以可用in操作符判断字符串包含关系。例如:

>>> x='abcdefg'
>>> 'a' in x
True
>>> 'q' in x
False

3.字符串的连接

字符串的连接是把多个字符串按顺序合并成一个新的字符串。例如:

>>> '12'+'34'+'56'
'123456'
>>> '12'*3
'121212'

4.字符串的迭代

可用for循环迭代处理字符串。例如:

>>> for a in 'abc':print(a)
...
a
b
c

5.索引和分片

字符串作为一个有序集合,其中的每个字符可以通过偏移量来进行索引或分片。

索引是通过偏移量来获得字符串中的单个字符。跟JAVA中的数组中获取数组中的元素类型。例如:

>>> x='abcdefg'
>>> x[0]
'a'
>>> x[-1]
'g'
>>> x[3]
'd'

索引可获得指定位置的单个字符,但不能通过索引来修改字符串。因为字符串对象不允许被修改


分片是利用范围从字符串中连续获得多个字符。分片的基本操作:

x [start:end]
表示返回变量x引用的字符串中从偏移量start开始,到偏移量end之间( 不包含偏移量end对应的字符)的子字符串。start和end参数均可省略,start默认是0,end默认为字符串长度。例如:
>>> x='abcdefg'
>>> x[1:4]  #返回偏移量为1到3的字符
'bcd'
>>> x[1:]  #返回偏移量为1到末尾的字符
'bcdefg'
>>> x[:4] #返回字符串开头到偏移量为3的字符
'abcd'
>>> x[:-1] #除最后一个字符,其他字符全部返回
'abcdef'
>>> x[:] #返回全部字符
'abcdefg'

还可以增加一个步长参数来跳过中间的字符。例如:

x [start:end:step]

用这种分片时,会跳过中间的step个字符,step默认为1。例如:

>>> x='0123456789'
>>> x[1:7:2]  #返回偏移量为1、3、5的字符
'135'
>>> x[::2] #返回偏移量为偶数的全部字符
'02468'
>>> x[7:1:-2] #返回偏移量为7、5、3的字符
'753'
>>> x[::-1] #将字符反序返回
'9876543210'

可以看到,步长为负数时,返回的字符与原来的顺序相反。


6.字符串转换

可用str函数将数字转换成字符串。例如:

>>> str(123)
'123'
>>> str(1.23)
'1.23'

四.字符串方法

字符串作为str类型对象,Python提供了一系列方法用于字符串处理

1.capitalize()

将字符串第一个字母大写,其余字母小写,返回新的字符串。例如:

>>> 'this is Python'.capitalize()
'This is python'

2.count(sub[,start[,end]])

返回子字符串sub在字符串x的[start,end]范围内出现的次数,省略范围时查找整个字符串。例如:

>>> 'abcabcabc'.count('ab') #在整个字符串中统计ab出现的次数
3
>>> 'abcabcabc'.count('ab',2) #从第3个字符开始到字符串末尾统计ab出现的次数
2

3.endswith(sub[,start[,end]])

判断[start,end]范围内的子字符串是否以sub字符串结尾。例如:

>>> 'abcabcabc'.endswith('bc')
True
>>> 'abcabcabc'.endswith('b')
False

4.startswith(sub[,start[,end]])

判断[start,end]范围内的子字符串是否以sub字符串开头。例如:

>>> 'abcd'.startswith('ab')
True
>>> 'abcd'.startswith('b')
False

5.expandtabs(tabsize=8)

将字符串中的Tab字符替换为空格,参数默认为8,即一个Tab字符替换为8个空格。例如:

>>> x='12\t34\t56'
>>> x
'12\t34\t56'
>>> x.expandtabs() #默认每个Tab字符替换为8个空格
'12      34      56'
>>> x.expandtabs(0) #参数为0时删除全部Tab字符
'123456'
>>> x.expandtabs(4) #每个Tab字符替换为4个空格
'12  34  56'

6.find(sub[,start[,end]])

在[start,end]范围内查找子字符串sub,返回第一次出现位置的偏移量。没有找到返回-1.例如:

>>> x='abcdabcd'
>>> x.find('ab')
0
>>> x.find('ab',2)
4
>>> x.find('ba')
-1

7.index(sub[,start[,end]])

与find()方法相同,只是在未找到子字符串时产生ValueError异常。例如:

>>> x='abcdabcd'
>>> x.index('ab')
0
>>> x.index('ab',2)
4
>>> x.index('e')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found

8.rfind(sub[,start[,end]])

在[start,end]范围内查找子字符串sub,返回最后一次出现位置的偏移量。没有找到时返回-1.例如:

>>> 'abcdabcd'.rfind('ab')
4

9.rindex(sub[,start[,end]])

与rfind()方法相同,只是在未找到子字符串时产生ValueError异常。例如:

>>> 'abcdabcd'.rindex('ab')
4

10.format(args)

字符串格式化,将字符串中用{}定义的替换域依此用参数args替换。例如:

>>> 'My name is {0},age is {1}'.format('Tome',23)
'My name is Tome,age is 23'

11.format_map(map)

使用映射完成字符串格式化。例如:

>>> 'My name is {name},age is {age}'.format_map({'name':'Tome','age':23})
'My name is Tome,age is 23'

12.isalnum()

字符串由数字或字母组成时返回True,否则返回False。例如:

>>> '123'.isalnum()
True

13.isalpha()

字符串中的字符全部是字母时返回True,否则返回False。例如:

>>> 'acv'.isalpha()
True

14.isdecimal()

字符串中的字符全部是数字时返回True,否则返回Fasle。例如:

>>> '123'.isdecimal()
True

15.isdigit()

字符串中的字符全部是数字时返回True,否则返回False。例如:

>>> '123'.isdigit()
True

16.isnumeric()

字符串中的字符全部是数字时返回True,否则返回False。例如:

>>> '123'.isnumeric()
True

17.islower()

字符串中的字母全部是小写字母时返回True,否则返回False。例如:

>>> 'abc123'.islower()
True

18.isupper()

字符串中的字母全部是大写字母时返回True,否则返回False。例如:

>>> 'ABD123'.islower()
False

19.isspace()

字符串中的字符全部是空格时返回True,否则返回False。例如:

>>> '   '.isspace()
True

20.ljust(width[,fillchar])

当字符串长度小于width时,在字符串末尾填充fillchar,使长度等于width。默认填充字符为空格。例如:

>>> 'adv'.ljust(8)
'adv     '

21.rjust(width[,fillchar])

与ljust()方法类似,只是在字符串开头填充字符。例如:

>>> 'abc'.rjust(8)
'     abc'

22.lower()

将字符串中的字母全部转换成小写。例如:

>>> 'This is ABC'.lower()
'this is abc'

23.upper()

将字符串中的字母全部转换成大写。例如:

>>> 'This is ABC'.upper()
'THIS IS ABC'

24.lstrip([chars])

未指定参数chars删除字符串开头的空格、回车符以及换行符,否则删除字符串开头包含在chars中的字符。例如:

>>> '\n\r  abc'.lstrip()
'abc'

25.rstrip([chars])

未指定参数chars删除字符串末尾的空格、回车符以及换行符,否则删除字符串末尾包含在chars中的字符。例如:

>>> '\n abc \r\n'.rstrip()
'\n abc'

26.strip([chars])

未指定参数chars删除字符串首尾的空格,回车符以及换行符,否则删除字符串首尾包含着chars中的字符。例如:

>>> '\n \r abc \r\n'.strip()
'abc'

27.partition(sep)

将字符串从sep第一次出现的位置分隔成三部分:sep之前、sep和sep之后,返回一个三元组。没有找到sep时,返回字符串本身和两个空格组成的三元组。例如:

>>> 'abc123abc123abc123'.partition('12')
('abc', '12', '3abc123abc123')

28.rpartition(sep)

与partition()类似,只是在从字符串末尾开始找第一个sep。例如:

>>> 'abc123abc123abc123'.rpartition('12')
('abc123abc123abc', '12', '3')
29.replace(old,new[,count])

从字符串开头,依次将包含的old字符串替换为new字符串,省略count时替换全部old字符串。指定count时,替换次数不能大于count。例如:

>>> x='ab12'*4
>>> x
'ab12ab12ab12ab12'
>>> x.replace('12','000')  #将12全部替换成000
'ab000ab000ab000ab000'

30.split([sep],[maxsplit])

将字符串按照sep指定的分隔字符串分解,然后返回分解后的列表。sep省略时,以空格为分隔符。maxsplit指定分解次数。例如:

>>> 'ab cd ef'.split()
['ab', 'cd', 'ef']

31.swapcase()

将字符串中的字母大小写互换。例如:

>>> 'adcDEF'.swapcase()
'ADCdef'

32.zfill(width)

如果字符串长度小于width,则在字符串开头填充0,使长度等于width。如果第一个字符为加号或减号,则在加号或减号之后填充0.例如:

>>> 'abc'.zfill(8)
'00000abc'
>>> '+12'.zfill(8)
'+0000012'



五.字符串格式化表达式

字符串除了用format()方法进行格式化外,还可使用格式化表达式来处理字符串。字符串格式化表达式用%表示,%之前为需要进行格式化的字符串,%之后为需要填入字符串中的实际参数。例如:

>>> "The %s'sprice id %4.2f" %('apple',2.5)
"The apple'sprice id 2.50"

在字符串"The %s's price id %4.2f"中,%s和%4.2f是格式控制符。参数表('apple',2.5)中的参数依次填入各个格式控制符。

Python的格式控制符如下表所示:

Python格式控制符

格式控制符 说明
s 参数为字符串或其他任何对象
r 同s,但字符串用repr表达式
c 参数为单个字符或字符的ASCII码
d 参数转换为十进制整数
i 参数转换为十进制整数
u 参数转换为十进制整数
o 参数转换为八进制整数
x 参数转换为十六进制整数,字母小写
X 参数转换为十六进制整数,字母大写
e、E 按科学计数法格式转换为浮点数
f、F 按定点小数格式转换浮点数
g、G 按定点小数格式转换为浮点数

使用时,格式控制符的基本结构如下。

%[name][flags][width[.precision]]格式控制符

其中:name为字典对象的键,flags为正负号+/-、左对齐-或0(补零标志),width指定数字的宽度,precision指定数字的小数位数。


猜你喜欢

转载自blog.csdn.net/qq_41338249/article/details/80983095