Python从菜鸟到高手(7):字符串

1. 单引号字符串和转义符

  字符串与数字一样,都是值,可以直接使用,在Python控制台中直接输入字符串,如"Hello World”,会按原样输出该字符串,只不过用单引号括了起来。

>>> "Hello World"
‘Hello World‘

  那么用双引号和单引号括起来的字符串有什么区别呢?其实没有任何区别。只不过在输出单引号或双引号时方便而已。例如,在Python控制台输入‘Let‘s go!‘,会抛出如下的错误。

>>> ‘Let‘s go!‘
  File "<stdin>", line 1
    ‘Let‘s go!‘
         ^
SyntaxError: invalid syntax

  这是因为Python解释器无法判断字符串中间的单引号是正常的字符,还是多余的单引号,所以会抛出语法错误异常。要输出单引号的方法很多,其中之一就是使用双引号将字符串括起来。

>>> "Let‘s go!"
"Let‘s go!"

  现在输出单引号是解决了,但如何输出双引号呢?其实很简单,只需要用单引号将字符串括起来即可。

>>> ‘我们应该在文本框中输入"Python"‘
‘我们应该在文本框中输入"Python"‘

  现在输出单引号和输出双引号都解决了,那么如何同时输出单引号和双引号呢?对于这种需求,就要使用本节要介绍的另外一个知识点:转义符。Python语言中的转义符是反斜杠(\)。转义符的功能是告诉Python解释器反斜杠后面的是字符串中的一部分,而不是用于将字符串括起来的单引号或双引号。所以如果字符串中同时包含单引号和双引号,那么转义符是必须的。

print(‘Let\‘s go!. \"一起走天涯\"‘)          #  Let‘s go!. "一起走天涯"

  在上面这行代码中,单引号和双引号都是用的转义符,其实在这个例子中,由于字符串是由单引号括起来的,所以如果里面包含双引号,是不需要对双引号使用转义符的。
下面的例子演示了Python语言中单引号和双引号的用法,以及转义符在字符串中的应用。

实例位置:PythonSamples\src\chapter2\demo2.10.py
# 使用单引号的字符串,输出结果:Hello World
print(‘Hello World‘)
# 使用双引号的字符串,输出结果:Hello World
print("Hello World")
#  字符串中包含单引号,输出结果:Let‘s go!
print("Let‘s go!")
#  字符串中包含双引号,输出结果:"一起走天涯"
print(‘"一起走天涯"‘)
#  字符串中同时包含单引号和双引号,其中单引号使用了转义符,输出结果:Let‘s go! "一人我饮酒醉"
print(‘Let\‘s go! "一人我饮酒醉" ‘)

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

2.拼接字符串

  在输出字符串时,有时字符串会很长,在这种情况下,可以将字符串写成多个部分,然后拼接到一起。我们可以尝试下面的一种写法。

>>> ‘Hello‘ ‘world‘
‘Helloworld‘

  这种写法是将两个字符串挨着写到一起,字符串中间可以有0到n个空格。现在让我们看看这种方式能否将两个字符串变量的值组合到一起。

>>> x = ‘hello‘
>>> y = ‘world‘
>>> x y
  File "<stdin>", line 1
    x y
      ^
SyntaxError: invalid syntax

  我们可以看到,如果是两个字符串类型的变量紧挨着写在一起,Python解释器就会认为是语法错误,所以这种方式实际上并不是字符串的拼接,只是一种写法而已,而且这种写法必须是两个或多个字符串值写在一起,而且不能出现变量,否则Python解释器就会认为是语法错误。

  如果要连接字符串,要用加号(+),也就是字符串的加法运算。

>>> x = ‘Hello ‘
>>> x + ‘World‘
‘Hello World‘

下面的代码演示了字符串拼接的方法。

# 将字符串写到一起输出,运行结果:helloworld世界你好
print("hello"   "world"  "世界你好")        

x = "hello"     #  声明字符串变量x
y = "world"     #  声明字符串变量y 

#print(x y)         # 抛出异常,变量不能直接写到一起

print(x + y)        # 字符串拼接,要使用加号(+),运行结果:helloworld

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

《Python从菜鸟到高手》开始转载了,敬请关注

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

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

>>> print(‘Hello\nWorld‘)
Hello
World

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

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

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

>>> print(repr("Hello\nWorld"))
‘Hello\nWorld‘

  使用repr函数输出的字符串,会使用一对单引号括起来。
其实如果只想输出“\n”或其他类似的转义符,也可以使用两个反斜杠输出“\”,这样“\”后面的n就会被认为是普通的字符了。

>>> print("Hello\\nWorld")
Hello\nWorld

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

>>> print(r"Hello\nWorld")
Hello\nWorld

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

? repr函数

? 转义符(\)

? 在字符串前面加“r”

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

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

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

  我们可以看到,使用repr函数输出的“<hello\nworld>”字符串被一对单引号括了起来,而且字符串长度是16。而使用str函数输出同样的字符串,长度是13。在str函数输出的字符串中,“\n”算一个字符,长度为1,而用repr函数输出的字符串中,“\n”是两个字符,长度为2。再加上一对单引号,所以长度是16。

4.长字符串

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

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

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

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

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

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

print("Hello\n          # 输出一行字符串
     World")

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

print(‘‘‘I                      # 使用3个单引号定义长字符串
       ‘love‘
          "Python"
          ‘‘‘
    )

s = """Hello                    #  使用双引号定义长字符串
    World
       世界
    你好
"""

print(s)                        #  输出长字符串

print("Hello\                   #  每行字符串在回车符之前用转义符,就可以将字符串写成多行
   World")

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

《Python从菜鸟到高手》已经出版,开始连载了,购买送视频课程

原文地址:http://blog.51cto.com/androidguy/2170406

时间: 2024-10-09 23:01:20

Python从菜鸟到高手(7):字符串的相关文章

Python从菜鸟到高手(5):数字

1 基础知识 ??Python语言与其他编程语言一样,也支持四则运算(加.减.乘.除),以及圆括号运算符.在Python语言中,数字分为整数和浮点数.整数就是无小数部分的数,浮点数就是有小数部分的数.例如,下面的代码是标准的四则运算表达式. 2 + 4 4 * 5 + 20 5.3 / 7 (30 + 2) * 12 ??如果要计算两个数的除法,不管分子和分母是整数还是浮点数,使用除法运算符(/)的计算结果都是浮点数.例如1/2的计算结果是0.5,2/2的计算结果是1.0.要想让Python解释

Python从菜鸟到高手(6):获取用户输入、函数与注释

1. 获取用户输入   要编写一个有实际价值的程序,就需要与用户交互.当然,与用户交互有很多方法,例如,GUI(图形用户接口)就是一种非常好的与用户交互的方式,不过我们先不讨论GUI的交互方式,本节会采用一种原始,但很有效的方式与用户交互,这就是命令行交互方式,也就是说,用户通过命令行方式输入数据,程序会读取这些数据,并做进一步的处理.   从命令行接收用户的输入数据,需要使用input函数.input函数接收一个字符串类型的参数,用于作为输入的提示.input函数的返回值就是用户在命令行中录入

Python从菜鸟到高手(8):print函数、赋值与代码块

1.神奇的print函数 ??print函数相信读者一定对它不陌生,因为在前面的章节,几乎每个例子都使用了print函数,这个函数的功能就是在控制台输出文本.不过print在输出文本时还可以进行一些设置,以及输出多参数字符串. ??如果为print函数传入多个参数值,那么print函数会将所有的参数值首尾相接输出. # 输出结果:a b c d e print("a","b","c","d","e"); ?

Python从菜鸟到高手(9):条件和条件语句

1.布尔(Boolean)值和布尔变量 ??在讲条件语句之前,首先应该了解一下布尔类型.条件语句(if)需要为其指定布尔值或布尔类型的变量,才能根据条件判断是否要指定代码块中的语句.布尔值只有两个值:True和False,可以将这两个值翻译成"真"和"假". ??现在我们已经了解了布尔值是用来做什么的,但Python语言会将哪些值看做布尔值呢?其实在Python语言中,每一种类型的值都可以被解释成布尔类型的值.例如,下面的值都会被解释成布尔值中的False. Non

Python从菜鸟到高手(10):循环

  我们现在已经知道了如何使用if语句让程序沿着不同的路径执行,不过程序最大的用处就是利用CPU和GPU强大的执行能力不断重复执行某段代码,想想Google的AlphaGo与柯洁的那场人机大战,尽管表面上是人工智能的胜利,其实人工智能只是算法,人工只能算法之所以会快速完成海量的数据分享,循环在其中的作用功不可没.   对于初次接触程序设计的读者,可能还不太理解循环到底什么东西.下面先看一下循环的伪代码. 查看银行卡余额 没有发工资,等待1分钟,继续执行1 Oh,yeah,已经发工资了,继续执行4

Python从菜鸟到高手(11):列表的基础操作

  列表可以使用所有适用于序列的标准操作,例如索引.分片.连接和乘法.但列表还有一些属于自己的操作,如修改列表本身的操作,这些操作包括元素赋值.元素删除.分片赋值以及下一节要将的列表方法. 1. 列表元素赋值   如果要修改列表中的某一个元素,可以像使用数组一样对列表中的特定元素赋值,也就是使用一对中括号指定元素在列表中的索引,然后使用赋值运算符(=)进行赋值.   本例修改了列表s中的前两个元素值. s = ["Bill", "Mike", "John&

Python从菜鸟到高手(12):通过索引操作序列元素

1.定义序列   本文将介绍一下在Python语言中如何定义序列.定义序列的语法与Java中的数组类似,使用一对中括号将序列中的元素值括起来.下面的例子创建一个元素类型是字符串的序列,实现代码如下: names = ["Bill", "Mary", "Jack"]   同一个序列,不仅可以包含相同类型的值,还可以包含不同类型的值.下面的例子在一个序列中放置不同类型的值,实现代码如下: values = ["Bill", 30,

Python从菜鸟到高手(14):序列的加法和乘法

1 序列的加法   序列也可以相加,但要注意,这里的相加,并不是相对应的序列元素值相加,而是序列首尾相接.由于字符串属于字符序列,所以字符串相加也可以看做是序列相加.但一个字符串不能和一个序列相加,否则会抛出异常.   本例演示了两个序列之间的加法,以及序列和字符串之间相加后会抛出异常. print([1,2,3] + [6,7,8]) # 运行结果:[1,2,3,6,7,8] print("Hello" + " world") # 运行结果:Hello world

《Python从菜鸟到高手》已经出版,购买送视频课程

好消息,<Python从菜鸟到高手>已经出版!!! ??JetBrains官方推荐图书!JetBrains官大中华区市场部经理赵磊作序!送2400分钟同步视频课程!500个案例,400道Python练习题,电子书,10万行源代码,6个实战项目! 本书完整目录 购买地址: 当当 京东 ??在2018-10-15之前在以上地址购买本书,并5分好评以及20字以上评论.除了赠送40小时Python同步视频课程外,还赠送李宁老师任意200元以内的课程或套餐,如果课程或套餐超过200元,直接不差价即可.