小白编程
亮色模式 暗色模式 跟随系统
首页 Python

如何在 Python 中对字符串进行操作

发布日期:

在 Python 编程中,定义和收集数据是基础步骤,随后利用这些数据实现特定的功能。因此,对数据进行分类处理显得尤为重要。我们将在本文探讨字符串这一数据类型。尽管字符串看起来简单直观,但其应用方式却多种多样。

字符串(string)指的是一系列字符的集合。在 Python 中,任何被引号包围的文本都被视为字符串,这些引号可以是单引号或双引号:

1
2
"这是一个字符串"
'这是也一个字符串'

这种灵活性让你能够在字符串中包含引号和撇号:

1
2
3
"欢迎访问小白编程"
"You're a hero."
'包含双引号的"字符串"'

下面来看一些使用字符串的方式。

使用方法修改字符串的大小写

在对字符串进行处理时,改变单词的字母大小写算得上是一个既简单又常用的操作了。以下是一段示例代码,让我们来分析它的作用:

1
2
name = "ada lovelace"
print(name.title())

运行它,你将看到如下输出:

1
Ada Lovelace

在这个示例中,变量 name 被赋值为全小写的字符串 "ada lovelace"。在函数调用 print() 中,title() 方法被应用于这个变量。在 Python 中,方法(method)是一种可以对数据执行的操作。

name.title() 中,name 后面的点号(.)指示 Python 对 name 变量执行 title() 方法所指定的操作。每个方法后面都跟着一对括号,这是因为方法通常需要额外的参数来执行任务。对于 title() 函数来说,它不需要任何额外的参数,因此它的括号是空的。

title() 方法的作用是将字符串中每个单词的首字母转换为大写,其余字母转换为小写。这在处理需要首字母大写的场合非常有用,比如格式化人名。例如,你可能希望程序能够识别 Ada、ADA 和 ada 为同一个名字,并统一显示为 “Ada”。

除了 title() 方法,Python 还提供了其他几个用于处理字符串大小写的有用方法。例如,如果你想将整个字符串转换为大写或小写,可以分别使用 upper()lower() 方法,如下所示:

1
2
3
name = "Ada Lovelace"
print(name.upper())
print(name.lower())

这些代码的输出如下:

1
2
ADA LOVELACE
ada lovelace

在存储数据时,lower() 方法很有用。由于用户输入往往不会完全符合我们预期的大小写格式,因此通常需要先将字符串统一转换为小写形式进行存储。这样做可以确保数据的一致性和标准化。以后需要显示这些信息时,再将其转换为最合适的大小写方式即可。

在字符串中使用变量

在多种场景下,你可能需要在字符串中嵌入变量的值。例如,假设你有两个变量,一个用于存储名字(first name),另一个用于存储姓氏(last name),你可能希望将这两个值合并,以显示一个人的全名:

1
2
3
4
first_name = "ada"
last_name = "lovelace"
full_name = f"{first_name} {last_name}"
print(full_name)

要在字符串中插入变量值,你可以在字符串的左引号前加上字母 f(如上所示),然后将要插入的变量放在花括号 {} 内。这样,Python 在处理字符串时会自动将每个变量替换为其对应的值。

这种字符串被称为 f 字符串,其中 f 代表“format”(格式化),因为 Python 通过替换花括号内的变量为其值来格式化字符串。上述代码的输出将是:

1
Ada Lovelace

f 字符串非常有用,可以用于创建包含变量信息的完整消息,如下所示:

1
2
3
4
first_name = "Ada"
last_name = "Lovelace"
full_name = f"{first_name} {last_name}"
print(f"Hello, {full_name.title()}!")

这段代码将输出一条格式正确的问候语:

1
Hello, Ada Lovelace!

你还可以使用 f 字符串创建消息,并将整条消息赋值给一个变量:

1
2
3
4
5
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() 函数调用。

使用制表符或换行符来添加空白

在编程中,空白指的是那些不显示在屏幕上的字符,比如空格、制表符(tab)和换行符。用好这些空白,可以让输出更加整洁,阅读起来也更轻松。

如果你想在字符串里加个制表符,可以用 \t 这个符号:

1
2
print("Python")
print("\tPython")

输出:

1
2
Python
    Python

要在字符串中添加换行符,可以用 \n 这个符号:

1
print("Languages:\nPython\nC\nJavaScript")

输出:

1
2
3
4
Languages:
Python
C
JavaScript

而且,你可以在同一个字符串里同时用制表符和换行符。比如"\n\t"这个组合,就是让内容先换行,然后在新的一行开头加个制表符。下面的例子展示了怎么用一行代码输出四行内容:

1
print("Languages:\n\tPython\n\tC\n\tJavaScript")

输出:

1
2
3
4
Languages:
    Python
    C
    JavaScript

删除空白

在编程时,多余的空格可能会让人头疼。虽然对于我们来说,"python""python " 看起来差不多,但程序可不这么认为,它们在程序眼里是完全不同的两个字符串。Python 能够识别出 "python " 里多出来的空格,除非你告诉它忽略这些空格。

空格的重要性在于,我们经常需要比较两个字符串是否完全相同。比如,在用户登录网站时验证用户名,即使在看似简单的情况下,多出来的空格也会造成混淆。好在 Python 提供了简单的方法来清除用户输入中的多余空格。

Python 可以去掉字符串两端的多余空格。如果你想确保字符串末尾没有空格,可以用 rstrip() 方法。

1
2
3
4
favorite_language = 'python '
print(favorite_language)  # 输出:'python '
print(favorite_language.rstrip())  # 输出:'python'
print(favorite_language)  # 再次输出:'python '

变量 favorite_language 关联的字符串末尾有多余的空格(第一行)。当你在 Python 里打印这个变量时,可以看到末尾的空格(第二行)。调用 rstrip() 方法后(第三行),多余的空格被移除了。但这种移除只是暂时的,如果你再次打印 favorite_language,字符串还是会包含原来的多余空格(第四行)。

要永久移除字符串中的空格,你需要将移除空格后的结果重新赋值给变量:

1
2
3
favorite_language = 'python '
favorite_language = favorite_language.rstrip()
print(favorite_language)  # 输出:'python'

为了移除字符串中的空格,你删除了它末尾的空格,并将结果重新赋值给原来的变量(第二行)。在编程中,我们经常需要修改变量的值,并将新值赋给原来的变量,这就是变量值可能会随着程序运行或用户输入而变化的原因。

你还可以删除字符串开头的空格,或者同时删除两端的空格,分别使用 lstrip()strip() 方法:

1
2
3
4
favorite_language = ' python '
print(favorite_language.rstrip())  # 输出:' python'
print(favorite_language.lstrip())  # 输出:'python '
print(favorite_language.strip())  # 输出:'python'

在这个例子中,我们创建了一个开头和末尾都有空格的字符串。然后,我们分别删除了末尾、开头和两端的空格。练习使用这些字符串处理函数,可以帮助你熟悉字符串操作。在实际编程中,这些函数通常用于在存储用户输入之前对其进行清理。

处理字符串时,去掉前缀是个挺常见的需求。比如,用户输入了一个URL,它带着“https://”这样的常见前缀,但你想去掉这个前缀,只留下用户需要在地址栏输入的部分。下面演示了是怎么做的:

1
2
nostarch_url = 'https://www.baicoding.com/'
nostarch_url = nostarch_url.removeprefix('https://')

这里,我们在变量名后面加上了点号和 removeprefix() 方法,然后在括号里填上我们想从字符串中去掉的前缀。

和删除空白一样,removeprefix() 方法不会改变原来的字符串。如果你想保留去掉前缀后的结果,可以把它重新赋值给原来的变量,或者赋给一个新的变量:

1
simple_url = nostarch_url.removeprefix('https://')

如何在使用字符串时避免语法错误

语法错误是编程时经常碰到的一种错误,它发生在代码不符合 Python 的语法规则时。比如,如果你在单引号括起来的字符串里用到了撇号,就可能引发语法错误。这是因为 Python 会将第一个单引号和撇号之间的内容视为一个字符串,而剩下的部分则被误认为是 Python 代码,从而导致错误。

下面展示了如何正确使用单引号和双引号:

1
2
message = "One of Python's strengths is its diverse community."
print(message)

在这个例子中,撇号被放在了双引号之间,所以 Python 解释器能够正确理解这个字符串:

1
One of Python's strengths is its diverse community.

但是,如果你使用单引号,Python 就无法正确识别字符串的结束位置:

1
2
message = 'One of Python's strengths is its diverse community.'
print(message)

你会遇到这样的错误输出:

1
2
3
4
  File "hello_world.py", line 1
    message = 'One of Python's strengths is its diverse community.'
                                                                  ^
SyntaxError: unterminated string literal (detected at line 1)

从错误输出可以看出,问题出在最后一个单引号后面。在 Python 解释器看来,这种语法错误意味着代码中有些部分不是有效的 Python 代码,通常是因为引号使用不当。错误的原因多种多样,在学习 Python 编程的过程中,你可能会遇到不少语法错误,它们也是最不明确的,因此可能比较难找出来并修复。

在编程时,编辑器的语法高亮功能是个超棒的助手,它能帮你迅速定位一些语法错误。如果你发现 Python 代码显示的颜色和普通文本一样,或者普通文本显示的颜色和代码一样,这通常意味着你的引号可能没配对好。

简单来说,就是:

  • 如果代码块的颜色和普通文本一样,可能是因为你忘记闭合字符串的引号了。
  • 如果普通文本的颜色和代码块一样,可能是因为你在字符串里错误地使用了代码的标识符。

这种情况下,检查引号是否正确配对,通常是解决问题的第一步。这个小技巧能帮你节省不少调试时间。

相关文章