合并(拼接)字符串
在很多情况下,都需要合并字符串。例如,你可能想将姓和名存储在不同的变量中,等要显示姓名时再将它们合而为一:
first_name = "ada"
last_name = "lovelace"
❶ full_name = first_name + " " + last_name print(full_name)
Python使用加号(+ )来合并字符串。在这个示例中,我们使用+ 来合并first_name 、空格和last_name ,以得到完整的姓名(见❶),其结果如下:
ada lovelace
这种合并字符串的方法称为拼接 。通过拼接,可使用存储在变量中的信息来创建完整的消息。下面来看一个例子:
first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
❶ print("Hello, " + full_name.title() + "!")
在这里,一个问候用户的句子中使用了全名(见❶),并使用了方法title() 来将姓名设置为合适的格式。这些代码显示一条格式良好的简单问候语:
Hello, Ada Lovelace!
你可以使用拼接来创建消息,再把整条消息都存储在一个变量中:
first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
❶ message = "Hello, " + full_name.title() + "!"
❷ print(message)
上述代码也显示消息“Hello, Ada Lovelace!”,但将这条消息存储在了一个变量中(见❶),这让最后的print 语句简单得多(见❷)。
使用制表符或换行符来添加空白
在编程中,空白 泛指任何非打印字符,如空格、制表符和换行符。你可使用空白来组织输出,以使其更易读。
要在字符串中添加制表符,可使用字符组合\t ,如下述代码的❶处所示:
>>> print("Python")
Python
❶ >>> print("\tPython")
Python
要在字符串中添加换行符,可使用字符组合\n :
>>> print("Languages:\nPython\nC\nJavaScript")
Languages:
Python
C
JavaScript
还可在同一个字符串中同时包含制表符和换行符。字符串"\n\t" 让Python换到下一行,并在下一行开头添加一个制表符。下面的示例演示了如何使用一个单行字符串来生成四行输出:
>>> print("Languages:\n\tPython\n\tC\n\tJavaScript")
Languages:
Python
C
JavaScript
在接下来的两章中,你将使用为数不多的几行代码来生成很多行输出,届时制表符和换行符将提供极大的帮助。
删除空白
在程序中,额外的空白可能令人迷惑。对程序员来说,‘python’ 和’python ’ 看起来几乎没什么两样,但对程序来说,它们却是两个不同的字符串。Python能够发 现’python ’ 中额外的空白,并认为它是有意义的——除非你告诉它不是这样的。
空白很重要,因为你经常需要比较两个字符串是否相同。例如,一个重要的示例是,在用户登录网站时检查其用户名。但在一些简单得多的情形下,额外的空格也可能令人迷 惑。所幸在Python中,删除用户输入的数据中的多余的空白易如反掌。
Python能够找出字符串开头和末尾多余的空白。要确保字符串末尾没有空白,可使用方法rstrip() 。
❶ >>> favorite_language = 'python '
❷ >>> favorite_language
'python '
❸ >>> favorite_language.rstrip()
'python'
❹ >>> favorite_language
'python '
存储在变量favorite_language 中的字符串末尾包含多余的空白(见❶)。你在终端会话中向Python询问这个变量的值时,可看到末尾的空格(见❷)。对变 量favorite_language 调用方法rstrip() 后(见❸),这个多余的空格被删除了。然而,这种删除只是暂时的,接下来再次询问favorite_language 的值时,你会发 现这个字符串与输入时一样,依然包含多余的空白(见❹)。
要永久删除这个字符串中的空白,必须将删除操作的结果存回到变量中:
>>> favorite_language = 'python '
❶ >>> favorite_language = favorite_language.rstrip()
>>> favorite_language
'python'
为删除这个字符串中的空白,你需要将其末尾的空白剔除,再将结果存回到原来的变量中(见❶)。在编程中,经常需要修改变量的值,再将新值存回到原来的变量中。这就是 变量的值可能随程序的运行或用户输入数据而发生变化的原因。
你还可以剔除字符串开头的空白,或同时剔除字符串两端的空白。为此,可分别使用方法lstrip() 和strip() :
❹ >>> favorite_language = ' python '
❷ >>> favorite_language.rstrip()
' python'
❸ >>> favorite_language.lstrip()
'python '
❹ >>> favorite_language.strip()
'python'
在这个示例中,我们首先创建了一个开头和末尾都有空白的字符串(见❶)。接下来,我们分别删除末尾(见❷)、开头(见❸)和两端(见❹)的空格。尝试使用这些剥除函 数有助于你熟悉字符串操作。在实际程序中,这些剥除函数最常用于在存储用户输入前对其进行清理。
使用字符串时避免语法错误
语法错误 是一种时不时会遇到的错误。程序中包含非法的Python代码时,就会导致语法错误。例如,在用单引号括起的字符串中,如果包含撇号,就将导致错误。这是因为这会 导致Python将第一个单引号和撇号之间的内容视为一个字符串,进而将余下的文本视为Python代码,从而引发错误。
下面演示了如何正确地使用单引号和双引号。请将该程序保存为apostrophe.py,再运行它:
apostrophe.py
message = "One of Python's strengths is its diverse community."
print(message)
撇号位于两个双引号之间,因此Python解释器能够正确地理解这个字符串:
One of Python's strengths is its diverse community.
然而,如果你使用单引号,Python将无法正确地确定字符串的结束位置:
message = 'One of Python's strengths is its diverse community.'
print(message)
而你将看到如下输出:
File "apostrophe.py", line 1
message = 'One of Python's strengths is its diverse community.'
^❶
SyntaxError: invalid syntax
从上述输出可知,错误发生在第二个单引号后面(见❶)。这种语法错误 语 表明,在解释器看来,其中的有些内容不是有效的Python代码。错误的来源多种多样,这里指出一些常 见的。学习编写Python代码时,你可能会经常遇到语法错误。语法错误也是最不具体的错误类型,因此可能难以找出并修复。
注意 编写程序时,编辑器的语法突出功能可帮助你快速找出某些语法错误。看到Python代码以普通句子的颜色显示,或者普通句子以Python代码的颜色显示时,就可 能意味着文件中存在引号不匹配的情况。