单引号字符串和转义符
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
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
现在总结一下,如果让一个字符串按原始内容输出(不进行转义),有如下三种方法
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('''I # 使用3个单引号定义长字符串 'love' "Python" ''' ) s = """Hello # 使用双引号定义长字符串 World 世界 你好 """ print(s) # 输出长字符串 print("Hello\ # 每行字符串在回车符之前用转义符,就可以将字符串写成多行 World")