字符串
因为大多数程序定义和收集某种数据,然后用它做一些有用的事情,所以它有助于对不同类型的数据进行分类。我们要看的第一种数据类型是字符串。乍一看,字符串非常简单,但您可以通过多种不同方式使用它们。
字符串是字符系列。引号内的任何内容在 Python 中都被视为字符串,您可以像这样在字符串周围使用 单引号 或 双引号 :
"This is a string."
'This is also a string.'
这种灵活性允许您在字符串中使用引号和撇号:
'I told my friend, "Python is my favorite language!"'
"The language 'Python' is named after Monty Python, not the snake."
"One of Python's strengths is its diverse and supportive community."
让我们探索一些使用字符串的方法。
使用方法修改字符串的大小写
可以对字符串执行的最简单的任务之一是更改字符串中单词的大小写。查看以下代码,并尝试确定发生了什么:
name = "ada lovelace"
print(name.title())
将此文件另存为 name.py
,然后运行它。你应该看到这个输出:
Ada Lovelace
在此示例中,变量名称指的是小写字符串 "ada lovelace"
。方法 title()
出现在 print()
调用中的变量之后。方法是 Python 可以对一段数据执行的操作。name.title()
中名称后面的点 (.
) 告诉 Python 让 title()
方法作用于变量名称。每个方法后面都有一组括号,因为方法通常需要额外的信息来完成它们的工作。该信息在括号内提供。
title()
函数不需要任何附加信息,因此它的括号是空的。title()
方法将每个单词更改为首字母大写,其中每个单词都以大写字母开头。这很有用,因为您通常希望将名称视为一条信息。例如,您可能希望程序将输入值 Ada
、ADA
和 ada
识别为相同的名称,并将它们全部显示为 Ada
。
其他几种有用的方法也可用于处理案例。例如,您可以将字符串更改为全大写或全小写字母,如下所示:
name = "Ada Lovelace"
print(name.upper())
print(name.lower())
这将显示以下内容:
ADA LOVELACE
ada lovelace
lower()
方法对于存储数据特别有用。您通常不想相信用户提供的大写字母,因此您会在存储字符串之前将其转换为小写字母。然后,当您想要显示信息时,您将使用对每个字符串最有意义的大小写。
在字符串中使用变量
在某些情况下,您会希望在字符串中使用变量的值。例如,您可能希望使用两个变量分别表示名字和姓氏,然后组合这些值以显示某人的全名:
first_name = "ada"
last_name = "lovelace"
full_name = f"{first_name} {last_name}" (1)
print(full_name)
1 | 要将变量的值插入到字符串中,请将字母 f 紧接在左引号之前。将要在字符串中使用的任何变量的名称或名称用大括号括起来。当显示字符串时,Python 将用它的值替换每个变量。 |
这些字符串称为 f
字符串。f
代表格式,因为 Python 通过用它的值替换大括号中的任何变量的名称来格式化字符串。前面代码的输出是:
ada lovelace
您可以使用 f
格式做很多事情。例如,您可以使用 f
格式与变量关联的信息来组成完整的消息,如下所示:
first_name = "ada"
last_name = "lovelace"
full_name = f"{first_name} {last_name}"
print(f"Hello, {full_name.title()}!") (1)
1 | 全名用在问候用户的句子中,title() 方法将名字改为首字母大写。 |
此代码返回一个简单但格式良好的问候语:
Hello, Ada Lovelace!
您还可以使用 f
格式编写一条消息,然后将整个消息分配给一个变量:
first_name = "ada"
last_name = "lovelace"
full_name = f"{first_name} {last_name}"
message = f"Hello, {full_name.title()}!" (1)
print(message) (2)
1 | 通过将 f 格式消息分配给变量。 |
2 | 我们使最终的 print() 调用变得更加简单。 |
此代码显示消息 Hello, Ada Lovelace!
。
使用制表符或换行符来添加空白
在编程中,空白是指任何非打印字符,例如空格、制表符和行尾符号。您可以使用空格来组织您的输出,以便用户更容易阅读。
要在文本中 添加制表符 ,请使用字符组合 \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 ' (1)
>>> favorite_language (2)
'python '
>>> favorite_language.rstrip() (3)
'python'
>>> favorite_language (4)
'python
1 | 与 favorite_language 相关联的值在字符串末尾包含额外的空格。 |
2 | 当您在终端会话中向 Python 询问此值时,您可以看到值末尾的空格。 |
3 | 当 rstrip() 方法作用于变量 favorite_language 时,这个多余的空格就被去掉了。但是,它只是暂时删除。 |
4 | 如果您再次询问 favorite_language 的值,该字符串看起来与输入时相同,包括额外的空格。 |
要从字符串中永久删除空格,您必须将剥离的值与变量名称相关联:
>>> favorite_language = 'python '
>>> favorite_language = favorite_language.rstrip() (1)
>>> favorite_language
'python'
1 | 要从字符串中删除空格,您可以从字符串的右侧删除空格,然后将这个新值与原始变量相关联。 |
更改变量的值在编程中经常发生。这就是在执行程序或响应用户输入时更新变量值的方式。
您还可以使用 lstrip()
方法从字符串的左侧去除空格,或者使用 strip()
一次从两侧去除空格:
>>> favorite_language = ' python ' (1)
>>> favorite_language.rstrip() (2)
' python'
>>> favorite_language.lstrip() (3)
'python '
>>> favorite_language.strip() (4)
'python'
1 | 在此示例中,我们从一个在开头和结尾有空格的值开始。 |
2 | 然后,我们从右侧、 |
3 | 左侧 和 |
4 | 两侧移除多余的空间。试验这些剥离函数可以帮助您熟悉操作字符串。在现实世界中,这些剥离函数最常用于在将用户输入存储到程序之前清理用户输入。 |
删除前缀
使用字符串时,另一个常见任务是删除前缀。考虑一个带有通用前缀 https://
的 URL。我们想删除这个前缀,这样我们就可以只关注用户需要在地址栏中输入的 URL 部分。以下是如何做到这一点:
>>> nostarch_url = 'https://nostarch.com'
>>> nostarch_url.removeprefix('https://')
'nostarch.com'
输入变量名后跟一个点,然后是方法 removeprefix()
。在括号内,输入要从原始字符串中删除的前缀。
与删除空格的方法一样,removeprefix()
保留原始字符串不变。如果要保留删除前缀的新值,请将其重新分配给原始变量或将其分配给新变量:
>>> simple_url = nostarch_url.removeprefix('https://')
当您在地址栏中看到一个 URL 而没有显示 https://
部分时,浏览器可能在幕后使用了类似 removeprefix()
的方法。
如何在使用字符串时避免语法错误
您可能经常看到的一种错误是语法错误。当 Python 无法将程序的一部分识别为有效的 Python 代码时,就会发生语法错误。例如,如果您在单引号内使用撇号,则会产生错误。发生这种情况是因为 Python 将第一个单引号和撇号之间的所有内容解释为字符串。然后它会尝试将文本的其余部分解释为 Python 代码,这会导致错误。
下面介绍如何正确使用单引号和双引号。将这个程序保存为 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)
在输出中,您可以看到错误发生在最后一个单引号之后。这个语法错误表明解释器没有将代码中的某些内容识别为有效的 Python 代码,它认为问题可能是未正确引用的字符串。错误可能有多种来源,我会指出一些常见的错误。在学习编写正确的 Python 代码时,您可能经常会看到语法错误。语法错误也是最不具体的一种错误,因此识别和纠正它们可能很困难且令人沮丧。如果您卡在一个特别顽固的错误上,请参阅附录 C 中的建议。
编辑器的语法高亮功能应该可以帮助您在编写程序时快速发现一些语法错误。如果您看到 Python 代码高亮显示为英文或英文高亮显示为 Python 代码,则您的文件中可能有不匹配的引号。 |