博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python从菜鸟到高手(7):字符串
阅读量:6472 次
发布时间:2019-06-23

本文共 4125 字,大约阅读时间需要 13 分钟。

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

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

>>> "Hello World"'Hello World'

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

>>> 'Let's go!'  File "
", 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 Worldprint('Hello World')        # 使用双引号的字符串,输出结果:Hello Worldprint("Hello World")#  字符串中包含单引号,输出结果:Let's go!print("Let's go!")#  字符串中包含双引号,输出结果:"一起走天涯"print('"一起走天涯"')#  字符串中同时包含单引号和双引号,其中单引号使用了转义符,输出结果:Let's go! "一人我饮酒醉"print('Let\'s go! "一人我饮酒醉" ')

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

199c0330-a09b-11e8-a6c4-6bd0a07de37c

2.拼接字符串

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

>>> 'Hello' 'world''Helloworld'

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

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

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

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

>>> x = 'Hello '>>> x + 'World''Hello World'

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

# 将字符串写到一起输出,运行结果:helloworld世界你好print("hello"   "world"  "世界你好")        x = "hello"     #  声明字符串变量xy = "world"     #  声明字符串变量y #print(x y)         # 抛出异常,变量不能直接写到一起print(x + y)        # 字符串拼接,要使用加号(+),运行结果:helloworld

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

ba0d9ef0-a09b-11e8-9392-13d8f957bf59

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

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

>>> print('Hello\nWorld')HelloWorld

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

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

  不过有的时候,我们不希望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"的字符串,运行结果:
print("
")# 用str函数将1234转换为数字,运行结果:1234print(str(1234))# 抛出异常,len函数不能直接获取数字的长度#print(len(1234)) # 将1234转换为字符串后,获取字符串长度,运行结果:4print(len(str(1234)))# 运行结果:
print(str("
"))# 运行结果:13print(len(str("
")))# 运行结果:'
'print(repr("
"))# 运行结果:16print(len(repr("
")))# 使用转义符输出“\”,输出的字符串不会用单引号括起来,运行结果:hello\nworldprint("
")# 运行结果:14print(len("
"))# 在字符串前面加“r”,保持字符串原始格式输出,运行结果:hello\nworldprint(r"
")# 运行结果:14print(len(r"
"))

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

3dbcb600-a09c-11e8-b8d0-2b58eb2c7eec

  我们可以看到,使用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")

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

enter image description here

转载地址:http://rfvko.baihongyu.com/

你可能感兴趣的文章
深度 | 机器学习敲门砖:任何人都能看懂的TensorFlow介绍【转】
查看>>
leveldb学习:DBimpl
查看>>
打印图片
查看>>
SHOW CREATE DATABASE Syntax
查看>>
rsync常见问题及解决办法
查看>>
MySQL日期 专题
查看>>
C#中禁止程序多开
查看>>
分布式缓存Redis使用以及原理
查看>>
[LeetCode] Number of 1 Bits 位操作
查看>>
JSON中JObject和JArray,JValue序列化(Linq)
查看>>
杂七杂八
查看>>
Activity竟然有两个onCreate方法,可别用错了
查看>>
Linux经常使用命令(十六) - whereis
查看>>
插件编译 版本问题
查看>>
android中TextView的阴影设置
查看>>
core dump相关
查看>>
Linux五种IO模型
查看>>
Bootstrap技术: 模式对话框的使用
查看>>
小知识,用myeclipes找jar
查看>>
in-list expansion
查看>>