什么是字符串?在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']