什么是字符串?在Python3中对字符串的定义是这样的:字符串是由Unicode码点组成的不可变序列。也就是说字符串是一组不可变的序列,既然是序列首先应该就具备序列类型都支持的操作。
(1)可以使用in或者not in判断字符是否在字符串中。
>>> a='hello '
>>> b= 'world'
>>> 'b' in b #左操作数要求是字符串,用‘’包裹
False #返回false
>>> 'b' not in b
True #返回true
(2)字符串使用“+”拼接
>>> a='hello '
>>> b= 'world'
>>> c=a+b #+号拼接字符串
>>> print(c)
hello world
(3)使用索引获取字符串中的字符。
>>> print(a[0])
h
(4)字符串使用切片
>>> a[0:3]
'hel'
(5)len()函数获取字符串长度
>>> len(b)
5
(6)index()函数获取字符索引
>>> a.index('e')
1
(7)count()函数计算某个字符在字符串出现的次数
>>> c.count('o')
2
(8)使用* 号复制字符串
>>> a*2
'hello hello '
(9)min(),max()函数获取最小元素和最大元素。
>>> min(a)
' '
>>> max(b)
'w'
>>> min(b)
'd'
>>> max(c)
'w'
>>> max(a)
'o'
其次,字符串是不可变的,字符串是不能被修改的,不能像列表一样具有append(),remove(),clear(),pop(),insert()等操作。
一、字符串表示
表示字符串有3中方式:
1、''' '''三引号
三引号表示的字符串是带格式的,如果三引号表示的字符串有换行,输出的字符串会连同换行一起输出。“ 三重引号” 之间的
所有引号、 制表符或换行, 都被认为是字符串的一部分。Python 的代码块缩进规则不适用于多行字符串。
>>> '''
python是一门编程语言
它简单易学,容易上手
'''
'\npython是一门编程语言\n它简单易学,容易上手\n' #输出内容
>>>
2、" " 双引号
>>> "hello world"
'hello world'
3、' '单引号
单引号同双引号表示的字符串是一样的。使用双引号的一个好处,就是字符串中可以使用单引号字符。
>>> "This's my dog" #双引号中嵌套使用了单引号
"This's my dog"
为什么双引号可以嵌套使用单引号呢?这是因为字符串以双引号开始, 所以 Python 知道单引号是字符串的一部分, 而不是表示字符串的结束。但是, 如果在字符串中既需要使用单引号又需要使用双引号,那就要使用转义字符。
二、字符串常用操作方法
1、替换字符串
替换字符串的方法主要有以下几个:
字符串方法 | 方法解释 |
upper() | 返回一个新字符串,其中原字符串的所有字母都被 相应地转换为大写,字符串中非字母字符保持不变。 |
lower() | 返回一个新字符串,其中原字符串的所有字母都被 相应地转换为小写。字符串中非字母字符保持不变。 |
title() | 返回一个新字符串,新字符串中的所有单词首字母大写。 |
capitalize() | 返回一个新字符串,新字符串中的首个单词的首字母大写。 |
swapcase() | 返回一个新字符串,将原字符串的所有大写字母替换为小写,原字符串的所有小写字母替换为大写。 |
replace(old,new[,max]) | 将字符串中的old替换成new,如果指定max,则替换次数不超过max。 |
strip() | 删除字符串两边的指定字符,括号的写入指定字符,默认为空格。 |
lstrip() | 删除字符串左边的指定字符,括号的写入指定字符,默认空格 |
rstrip() | 删除字符串右边的指定字符,括号的写入指定字符,默认空格 |
以上方法举例说明
>>> a=' hello world ' #定义字符串a
>>> b='I AM CHINESE' #定义字符串b
>>> b.lower()
'i am chinese' #lower()方法输出结果
>>> a.upper()
' HELLO WORLD ' #upper()方法输出结果
>>> b.title()
'I Am Chinese' #title()方法输出结果
>>> b.title().swapcase()
'i aM cHINESE' #swapcase()方法输出结果
>>> b.capitalize()
'I am chinese' #capitalize()方法输出结果
>>> a.replace('l','2')
' he22o wor2d ' #replace(old,new[,max])方法输出结果
>>> a.strip()
'hello world' #strip()输出结果
>>> a.lstrip()
'hello world ' #lstrip()输出结果
>>> a.rstrip()
' hello world' #rstrip()输出结果
2、字符串判断方法
字符串方法中有很多类似于isX()的字符串判断方法,如下表格介绍
字符串方法 | 方法解释 |
isupper() | 如果字符串的所有字符为大写,返回True,否则返回False |
islower() | 如果字符串的所有字符为小写,返回True,否则返回False |
isalpha() | 如果字符串只包含字母, 并且非空,返回True,否则返回False |
isalnum() | 如果字符串只包含字母和数字,并且非空,返回True,否则返回False |
isdecimal() | 如果字符串只包含数字字符,并且非空,返回True,否则返回False |
isspace() | 如果字符串只包含空格、制表符和换行,并且非空,返回True,否则返回False |
istitle() | 如果字符串仅包含以大写字母开头、后面都是小写字母的单词,返回True,否则返回False。 |
endswith() | 已指定字符串结尾,则返回True,否则返回False |
startswith() | 已指定字符串开始,则返回True,否则返回False |
isnumeric() | 字符串所有字符为数字字符,则返回True,否则返回False。 |
isdecimal() | 字符串所有字符为十进制数字字符,则返回True,否则返回False。 |
>>> str1='hello'
>>> str1.isupper()
False
>>> str1.islower()
True
>>> str1.istitle()
False
>>> str1.startswith('h')
True
>>> str1.endswith('e')
False
str2='1234'
>>> str2.isalpha()
False
>>> str2.isalnum()
True
>>> str2.isspace()
False
>>> str2.isdecimal()
True
3、字符串查找
Python 中有多种实现字符串查找的方式,例如find() 方法与 index() ,这两个方法的效果一样,都是仅仅告诉你所查找内容的索引位置,它们的最大的区别在于,找不到内容时的返回值不同,find()方法返回 -1,而index()方法会抛出异常 。
>>> str1.find('h')
0 #查找到‘h’后返回‘h’的索引位置。
>>> str1.find('w')
-1 #查找不到‘w’返回-1。
>>> str1.index('e')
1 #返回‘e’的索引位置
>>> str1.index('w')
Traceback (most recent call last): #查找不到‘w’抛出异常。
File "<pyshell#15>", line 1, in <module>
str1.index('w')
ValueError: substring not found
4、比较字符串
Python3中字符串比较大小是使用操作符‘==’,‘>’,‘<’,‘!=’等进行比较。字符串的比较是比较ASCII码值,从字符串的第一个字符开始比较,谁的ASCII码大谁就大。如果第一个相同,则比较第二个。以此类推。如果都相同则相等。
5、字符串拼接与拆分
join():join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
>>> str1='hello'
>>> str1.join('1234')
'1hello2hello3hello4'
split():split() 方法可以将长字符串拆分成一个列表。因为字符串是不可变序列,所以字符串拆分过程是在拷贝的字符串上进行的,并不会改变原有字符串。
split() 方法可接收两个参数,第一个参数是分隔符,即用来分隔字符串的字符,默认是所有的空字符,包括空格、换行( )、制表符( )等。拆分过程会消耗分隔符,所以拆分结果中不包含分隔符;split() 方法的第二个参数是一个数字表示拆分次数,默认是缺省,缺省时全分隔。
>>> str3='hello world'
>>> print(str3.split())
['hello', 'world']
>>> str3.split('e')
['h', 'llo world']