2-7 删除人名中的空白

存储一个人名,并在其开头和末尾都包含一些空白字符。务必至少使用字符组合"\t"和"\n"各一次。打印这个人名,已显示其开头和末尾的空白。然后,分别使用剔除函数lstrip()、rstrip()和strip()对人名进行处理,并将结果打印出来。
代码:

name=" Albert Einstein "
print("name")
print("\tname")
print("\nname")
print(name.rstrip())
print(name.lstrip())
print(name.strip())

运行结果:
在这里插入图片描述

2.3 字符串 大多数程序会定义并收集某种数据,然后使用它们来做些有意义的事情。因此,对数据分类大有裨益。我们将介绍的第一种数据类型是字符串。字符串虽然看似简单,但能够以很多不同的方式使用。 字符串(string)就是一系列字符。在 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 thesnake." "One of Python's strengths is its diverse and supportivecommunity." 下面来看一些使用字符串的方式。 2.3.1 使用方法修改字符串的大小写 对于字符串,可执行的最简单的操作之一是,修改其中单词的大小写。请看下面的代码,并尝试判断其作用: name.py name = "ada lovelace" print(name.title()) 将这个文件保存为 name.py,再运行它。你将看到如下输出: Ada Lovelace 在这个示例中,变量 name 指向全小写的字符串 "ada lovelace"。在函数调用 print() 中,title() 方法出现在这个变量的后面。方法(method)是 Python 可对数据执行的操作。在 name.title() 中,name 后面的句点(.)让 Python 对 name变量执行 title() 方法指定的操作。每个方法后面都跟着一对括号,这是因为方法通常需要额外的信息来完成工作。这种信息是在括 号内提供的。title() 函数不需要额外的信息,因此它后面的括号是空的。 title() 方法以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写。这很有用,因为你经常需要将名字视为信息。例 如,你可能希望程序将值 Ada、ADA 和 ada 视为同一个名字,并将它们都显示为 Ada。 还有其他几个很有用的大小写处理方法。例如,要将字符串改为全大 写或全小写的,可以像下面这样做: name = "Ada Lovelace" print(name.upper()) print(name.lower()) 这些代码的输出如下: ADA LOVELACE ada lovelace 在存储数据时,lower() 方法很有用。用户通常不能像你期望的那样提供正确的大小写,因此需要将字符串先转换为全小写的再存储。 以后需要显示这些信息时,再将其转换为最合适的大小写方式即可。 2.3.2 在字符串中使用变量 在一些情况下,你可能想在字符串中使用变量的值。例如,你可能想 使用两个变量分别表示名和姓,再合并这两个值以显示姓名: full_name.py first_name = "ada" last_name = "lovelace" ❶ full_name = f"{first_name} {last_name}" print(full_name) 要在字符串中插入变量的值,可先在左引号前加上字母 f(见❶),再将要插入的变量放在花括号内。这样,Python 在显示字符串时,将把每个变量都替换为其值。 这种字符串称为 f 字符串。f 是 format(设置格式)的简写,因为Python 通过把花括号内的变量替换为其值来设置字符串的格式。上述代码的输出如下: ada lovelace 使用 f 字符串可以完成很多任务,如利用与变量关联的信息来创建完整的消息,如下所示: first_name = "ada" last_name = "lovelace" full_name = f"{first_name} {last_name}" ❶ print(f"Hello, {full_name.title()}!") 这里,在一个问候用户的句子中使用了完整的姓名(见❶),并使用title() 方法来将姓名设置为合适的格式。这些代码将显示一条格式良好的简单问候语: Hello, Ada Lovelace! 还可以使用 f 字符串来创建消息,再把整条消息赋给变量: first_name = "ada" last_name = "lovelace" full_name = f"{first_name} {last_name}" ❶ message = f"Hello, {full_name.title()}!" ❷ print(message) 上述代码也显示消息“Hello, Ada Lovelace!”,但将这条消息赋给了一个变量(见❶),这让最后的函数调用 print() 简单得多(见 ❷)。 2.3.3 使用制表符或换行符来添加空白 在编程中,空白泛指任何非打印字符,如空格、制表符和换行符。你可以使用空白来组织输出,让用户阅读起来更容易。 要在字符串中添加制表符,可使用字符组合 \t: >>> print("Python") Python >>> print("\tPython") Python 要在字符串中添加换行符,可使用字符组合 \n: >>> print("Languages:\nPython\nC\nJavaScript") Languages: Python C JavaScript 还可以在同一个字符串中同时包含制表符和换行符。字符串 "\n\t"让 Python 换到下一行,并在下一行开头添加一个制表符。下面的示例演示了如何使用单行字符串来生成 4 行输出: >>> print("Languages:\n\tPython\n\tC\n\tJavaScript") Languages: Python C JavaScript 在接下来的两章中,你将使用寥寥几行代码来生成很多行输出,届时制表符和换行符将提供极大的帮助。 2.3.4 删除空白 在程序中,额外的空白可能令人迷惑。对程序员来说,'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' 在这个示例中,我们首先创建了一个开头和末尾都有空白的字符串(见❶)。接下来,分别删除右端(见❷)、左端(见❸)和两端(见❹)的空白。尝试使用这些剥除(strip)函数,有助于你熟悉字符串操作。在实际程序中,这些函数最常用于在存储用户输入前对其进行清理。 2.3.5 删除前缀 另一个常见的字符串处理任务是删除前缀。假设有一个 URL 包含常见的前缀 https://,而你想删除这个前缀,只关注用户需要输入地址栏的部分。下面演示了如何完成这项任务: >>> nostarch_url = 'https://nostarch.com'>>> nostarch_url.removeprefix('https://')'nostarch.com' 这里在变量名后面加上了句点和 removeprefix() 方法,并且在括号内输入了要从原始字符串中删除的前缀。 与删除空白的方法一样,removeprefix() 也保持原始字符串不变。如果想保留删除前缀后的值,既可将其重新赋给原来的变量,也可将其赋给另一个变量: >>> simple_url = nostarch_url.removeprefix('https://') 如果你在地址栏中看到不包含 https:// 部分的 URL,可能是浏览器在幕后使用了类似于 removeprefix() 的方法。 2.3.6 如何在使用字符串时避免语法错误 语法错误是一种你会不时遇到的错误。当程序包含非法的 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: unterminated string literal (detected at line 1) 从上述输出可知,错误发生在最后一个单引号后面(见❶)。在解释器看来,这种语法错误表明一些内容不是有效的 Python 代码,原因是没有正确地使用引号将字符串引起来。错误的原因各种各样,我将 指出一些常见的原因。在学习编写 Python 代码时,你可能经常遇到语法错误。语法错误也是最不具体的错误类型,因此可能难以找出并修复。当受困于非常棘手的错误时,请参阅附录 C 提供的建议。 注意:在编写程序时,编辑器的语法高亮功能可帮助你快速找出某些语法错误。如果看到 Python 代码以普通句子的颜色显示,或者普通句子以 Python 代码的颜色显示,就可能意味着文件中存在引号不匹配的情况。 动手试一试 在完成下面的每个练习时,都编写一个独立的程序,并将其保存到名称类似于 name_cases.py 的文件中。如果遇到困难,请休息一会儿或参阅附录 C 提供的建议。 练习 2.3:个性化消息 用变量表示一个人的名字,并向其显示一条消息。显示的消息应非常简单,如下所示。 Hello Eric, would you like to learn some Python today? 练习 2.4:调整名字的大小写 用变量表示一个人的名字,再分别以全小写、全大写和首字母大写的方式显示这个人名。 练习 2.5:名言 1 找到你钦佩的名人说的一句名言,将这个名人的姓名和名言打印出来。输出应类似于下面这样(包括引号)。 Albert Einstein once said, “A person who never made a mistake never tried anything new.” 练习 2.6:名言 2 重复练习 2.5,但用变量 famous_person 表示名人的姓名,再创建要显示的消息并将其赋给变量message,然后打印这条消息。 练习 2.7删除人名中的空白 用变量表示一个人的名字,并在 其开头和末尾都包含一些空白字符。务必至少使用字符组合 "\t" 和 "\n" 各一次。 打印这个人名,显示其开头和末尾的空白。然后,分别使用函数 lstrip()、rstrip() 和 strip() 对人名进行处理,并将结果打印出来。 练习 2.8:文件扩展名 Python 提供了 removesuffix() 方 法,其工作原理与 removeprefix() 很像。请将值 'python_notes.txt' 赋给变量 filename,再使用 removesuffix() 方法来显示不包含扩展名的文件名,就像文件浏览器所做的那样。 把以上所有内容转换为.md格式,文字部分注意标题等级顺序,所有代码为python格式不许省略删除,所有内容全部保留到.md格式里面去
最新发布
09-21
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值