字符串的意思就是“一串字符”,也可以看做是字符的序列。比如“Helo, Mike”是一个字符串,“How are you?”也是一个字符串。Python要求字符串必须使用引号括起来,不过Python与大多数编程语言不同,在Python中,既允许使用单引号(‘)表示字符串,也允许使用双引号(”)表示字符串。但单引号和双引号必须成对出现。

1. 字符串和转义符

字符串的内容几乎可以包含任何字符,例如python字符串切片,英文字符、数字、汉字等。

PS:Python3.x对中文字符支持较好,但 Python2.x则要求在源程序中增加“#coding:utf-8”才能支持中文字符。

下面的程序是字符串的基本用法:

str1 = 'hello world'           # 使用单引号表示字符串str2 = "Python从菜鸟到高手"     # 使用双引号表示字符串print(str1)print(str2)

但需要说明的是,Python并没有我们想象的那么聪明,如果字符串内容本身包含了单引号或双引号,就可能需要进行特殊处理。这里说的可能是指如果用双引号表示字符串,那么字符串中可以包含单引号,但不能直接包含双引号,如果用单引号表示字符串,那么字符串中可以有双引号,但不能直接包含单引号。那么如果非要包含单引号和双引号该怎么办呢?这就需要用到本节要讲的转义符。

先看第一种处理方式。假如字符串内容中包含了单引号,则可以使用双引号将字符串括起来。

例如,下面的代码是错误的。

str3=’I'm a coder'

由于上面字符串中包含了单引号,此时 Python会将字符串中的单引号与字符串中第1个单引号配对,这样就会把’I’当成字符串,而后面的 m a coder’就变成了多余的内容,从而导致语法错误。

为了避免这种问题,可以将上面代码改为如下形式:

str3 = "I'm a coder"

上面代码使用双引号将字符串括起来,此时 Python就会把字符串中的单引号当成字符串内容,而不是和字符串开始的引号配对。假如字符串内容本身包含双引号,则可使用单引号将字符串括起来,例如如下代码:

str4 = '"The weather is so hot today, it is already sweating!", said Mike'

接下来看第2种处理方式:转义符。 Python允许使用反斜线(/)将字符串中的特殊字符进行转义。假如字符串既包含单引号,又包含双引号,此时必须使用转义字符,例子代码如下:

str5 = '"The weather is so hot today, it's already sweating!", said Mike'

2. 字符串内建函数

Python 为字符串提供了40多个内建函数,在这一节只介绍其中几个常用的方法,其他的方法在使用上大同小异。

str1 = " Hello world! 你好"str2 = "world"
#返回字符串的长度:len(str)print('str1的长度:',len(str1))
#对字符串进行分割:split(str),分割符为str,此处以空格进行分割print('str1以空格分割的结果:',str1.split(' '))
#删除字符串首尾的空格print('str1删除首尾空格:',str1.strip())
#返回 str2 在 str1 里面出现的次数,如果 begin 或者 end 指定则返回指定范围内 str2出现的次数print('str2在str1中出现的次数:',str1.count(str2))print('str2在str1中出现的次数(指定范围):',str1.count(str2,10,22))
#检查字符串是否以 obj 结束,如果begin 或者 end 指定则检查指定的范围内是否以 obj 结束#如果是,返回 True,否则返回 False.print('str1是否以 str2结尾:',str1.endswith(str2))print('str1是否以 str2结尾(指定范围):',str1.endswith(str2,10,19))
#检测 str2是否包含在字符串str1中,如果指定范围 begin 和 end ,则检查是否包含在指定范围内,#如果包含返回开始的索引值,否则返回-1print('str1中是否包含str2:',str1.find(str2))print('str1中是否包含str2(指定范围):',str1.find(str2,6,22))

运行结果如下图所示:

串是字符的有限序列_python字符串切片_python 切片

3. 字符串高级操作

本节介绍一些与字符串相关的高级操作

(1)反转字符串

所谓反转字符串,就是将字符串按字符顺序倒序排列,例如,python编程nohtyp。这里提供了2种方法用于字符串反转。

方法1:使用join和reversed函数

s = "python"for c in reversed(s):    print(c, end=" ")print()rs = ''.join(reversed(s))print(rs)

输出结果如下图所示:

python字符串切片_串是字符的有限序列_python 切片

其中reversed函数返回字符串s的一个逆序可迭代的对象(每一个对象元素是一个字符)。然后再用join函数将这些字符连接起来,中间的分隔符是空串(长度为0的字符串),所以就会输出逆序字符串了。

#方法2
print(s[::-1])

这种方法利用了切片技术,如果step是-1,就会逆序输出

(2)字符串切片操作

字符串的分片就是截取字符串。截取字符串需要指定开始截取的位置(begin)、截取结束的位置(end)、步长(step)。分片操作与引用数组元素类似,使用一对中括号。只是在中括号中要指定begin、end和step中间用冒号(:)分隔。下面是一个字符串分片的例子。

s1 = "hello world"#  在字符串中使用索引print(s1[0])            # 获取s1的第1个字符,运行结果:hprint(s1[2])            # 获取s1的第3个字符,运行结果:l#  在字符串中使用分片print(s1[6:9])                 # 获取s1从第7个字符往后的3个字符,运行结果:worprint(s1[6:])           # 获取s1从第7个字符后的所有字符,运行结果:worldprint(s1[::2])          # 在s1中每隔一个取一个字符,运行结果:hlowrd

输出结果如下图所示:

串是字符的有限序列_python字符串切片_python 切片

4. 保持字符串的原汁原味

本文前面讲过转义符()的应用,其实转义符不光能输出单引号和双引号,还能控制字符串的格式,例如,使用“n”表示换行,如果在字符串中含有“n”,那么“n”后的所有字符都会被移到下一行。

print('HellonWorld')

输出如下结果:

Hello

World

如果要混合输出数字和字符串,并且换行,可以先用str函数将数字转换为字符串,然后在需要换行的地方加上“n”。

print(str(1234) + "n" + str(4321))

输出结果如下:

1234

4321

不过有的时候,我们不希望Python解析器转义特殊字符,希望按原始字符串输出,这时需要使用repr函数。

print(repr(“HellonWorld”))

输出结果如下:

‘HellonWorld’

使用repr函数输出的字符串,会使用一对单引号括起来。

其实如果只想输出“n”或其他类似的转义符,也可以使用两个反斜杠输出“”,这样“”后面的n就会被认为是普通的字符了。

print("Hello\nWorld")

输出结果如下:

HellonWorld

除了前面介绍的repr和转义符外,在字符串前面加“r”也可以原样输出字符串。

print(r"HellonWorld")

输出结果如下:

HellonWorld

现在总结一下python字符串切片,如果让一个字符串按原始内容输出(不进行转义),有如下3种方法。

下面的例子完整地演示了str和repr函数的用法。

# 输出带“n"的字符串,运行结果:<hello#                         world>print("")# 用str函数将1234转换为数字,运行结果:1234print(str(1234))# 抛出异常,len函数不能直接获取数字的长度#print(len(1234))#  将1234转换为字符串后,获取字符串长度,运行结果:4print(len(str(1234)))#  运行结果:<hello#         world>print(str(""))#  运行结果:13print(len(str("")))#  运行结果:''print(repr(""))#  运行结果:16print(len(repr("")))#  使用转义符输出“”,输出的字符串不会用单引号括起来,运行结果:hellonworldprint("")#  运行结果:14print(len(""))#  在字符串前面加“r”,保持字符串原始格式输出,运行结果:hellonworldprint(r"")#  运行结果:14print(len(r""))

运行结果如下图所示:

串是字符的有限序列_python 切片_python字符串切片

5. 长字符串

使用3个单引号或双引号括起来的文本会成为多行注释,其实如果将这样的字符串使用print函数输出,或赋给一个变量,就会成为一个长字符串。在长字符串中会保留原始的格式。

print("""Hello             # 长字符串,会按原始格式输出          World""");

如果使用长字符串表示一个字符串,中间可以混合使用双引号和单引号,而不需要加转义符。

print("""Hell"o"           #  长字符串,中间混合使用双引号和单引号          W'o'rld"""

对于普通字符串来说,同样可以用多行来表示。只需要在每一行后面加转义符(),这样以来,换行符本身就“转义”了,会被自动忽略,所以最后都会变成一行字符串。

print("Hellon         # 输出一行字符串      World")

下面的例子完整地演示了长字符串的用法。

print('''I                     # 使用3个单引号定义长字符串       'love'          "Python"          '''    )   s = """Hello                   #  使用双引号定义长字符串    World       世界    你好""" print(s)                       #  输出长字符串 print("Hello                  #  每行字符串在回车符之前用转义符,就可以将字符串写成多行   World")

程序运行结果如下图所示:

串是字符的有限序列_python 切片_python字符串切片

限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688