Python入门教程第84篇 常用字符串方法之大小写转换
Posted 不剪发的Tony老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python入门教程第84篇 常用字符串方法之大小写转换相关的知识,希望对你有一定的参考价值。
本篇我们学习字符串大小写转换相关的方法,包括 lower() 、upper()、title()、capitalize()、casefold() 以及 swapcase()。
字符串 lower() 方法
字符串的 lower() 方法用于返回小写形式的字符串,语法如下:
str.lower()
lower() 方法没有任何参数。
lower() 方法不会修改原始字符串,而是返回一个小写形式的字符串副本。
以下示例使用 lower() 方法返回了字符串“Python Lowercase”的小写形式:
s = 'Python Lowercase'
new_s = s.lower()
print(s)
print(new_s)
输出结果如下:
Python Lowercase
python lowercase
字符串 upper() 方法
字符串的 upper() 方法用于返回大写形式的字符串,语法如下:
str.upper()
upper() 方法没有任何参数。
upper() 方法不会修改原始字符串,而是返回一个小写形式的字符串副本。
以下示例使用 upper() 方法返回了字符串“python uppercase”的大写形式:
s = 'python uppercase'
new_s = s.upper()
print(s)
print(new_s)
输出结果如下:
python uppercase
PYTHON UPPERCASE
字符串 title() 方法
标题格式化(titlecase)是一种用于标题的大写样式,每个单词的第一个字母大写,其他字母小写。例如:
Python Title Case Tutorial
注意,标题格式的规则并没有统一的标准。
字符串的 title() 方法可以用于返回一个标题格式化的副本,语法如下:
str.title()
以下示例使用 title() 方法返回了字符串“john doe”的标题格式化形式:
name = 'john doe'.title()
print(name)
输出结果如下:
John Doe
title() 方法将一组连续的字母作为一个单词。这种方式通常没有什么问题,但是当字符串中包含撇号(’)时,结果可能会出乎我们的意料。例如:
s = "They're john's relatives.".title()
print(s)
输出结果如下:
They'Re John'S Relatives.
以上示例中使用了撇号作为单词边界。title() 方法将“They’re”作为两个单独的单词进行处理。
为了解决这个问题,我们需要定义一个包含正则表达式的函数:
import re
def titlecase(s):
return re.sub(
r"[A-Za-z]+('[A-Za-z]+)?",
lambda word: word.group(0).capitalize(),
s)
关于正则表达式的使用,我们会在后续的教程中进行介绍。
然后使用这个新创建的 titlecase() 函数:
s = "They're john's relatives."
s = titlecase(s)
print(s)
输出结果如下:
They're John's Relatives.
字符串 capitalize() 方法
capitalize() 方法的语法如下:
str.capitalize()
capitalize() 方法没有任何参数,返回字符串 str 首字符大写、其他字符小写的副本。
capitalize() 方法对于 ASCII 字符没有问题,但是无法用于非英语字符。例如,单词开始处的 NJ 字符在克罗地亚语中的显示为 Nj:
Njemačka
但是,capitalize() 方法返回的是“NJemačka”:
print('Njemačka'.capitalize())
为了解决这个问题,从 Python 3.8 开始,capitalize() 方法会将字符串的第一个字符转换为标题格式,而不是大写形式。
以下示例使用 capitalize() 方法将字符串“now is better than never.”的第一个单词的首字母转换为标题格式:
s = 'now is better than never.'
new_s = s.capitalize()
print(new_s)
输出结果如下:
Now is better than never.
字符串 casefold() 方法
字符串 casefold() 方法与 lower() 方法类似,返回字符串的一个小写形式(casefolded)的副本。
casefold() 方法比 lower() 方法更加激进,它会尝试消除字符串中的所有大小写差异。对于 ASCII 字符,lower() 方法 和 casefold() 方法的效果相同。 return the same result.;对于 Unicode 字符,casefold() 方法会返回更加准确的结果。
例如,字符“ß”在德语中的表示是“ss”。如果使用 lower() 方法,结果就是“ß”,因为它就是小写形式。但是使用 casefold() 方法,结果就是“ss”。
基于以上原因,对于不区分大小写的字符串比较,我们应该使用 casefold() 方法。
以下示例演示了使用 lower() 方法和 casefold() 方法比较字符串的差异:
color1 = 'weiß'
color2 = 'weiss'
print(color1 == color2) # False
print(color1.lower() == color2.lower()) # False
print(color1.casefold() == color2.casefold()) # True
输出结果如下:
False
False
True
字符串 swapcase() 方法
字符串的 swapcase() 方法用于将字符串中的大写字母转换为小写形式、小写字母转换为大写形式,返回转换后的副本。
swapcase() 方法如下:
str.swapcase()
对于英语字符,str.swapcase().swapcase() 返回的结果和 str 相同。但是,对于非英语字符,结果可能不同。也就是说,以下表达式可能不一定为 True:
str.swapcase().swapcase() == str
下面的示例使用 swapcase() 方法将字符串“Hello”的大小写进行反转:
message = 'Hello'
new_message = message.swapcase()
print(new_message)
输出结果如下:
hELLO
以下示例使用 swapcase() 方法处理非英语字符:
color = 'weiß'
print(color)
new_color = color.swapcase()
print(new_color)
print(color.swapcase().swapcase())
print(color.swapcase().swapcase() == color) # False
输出结果如下:
weiß
WEISS
weiss
False
“weiß”是一个德语单词,表示英语中的“white”,字母“ß”等价于“ss”。
表达式 color.swapcase() 返回了“WEISS”,所以表达式 color.swapcase().swapcase() 结果为“weiss”。
总结
- lower() 方法用于返回小写形式的字符串副本。
- upper() 方法用于返回大写形式的字符串副本。
- title() 方法用于返回一个标题格式化的字符串副本。
- capitalize() 方法用于返回首字符大写、其他字符小写的字符串副本。
- casefold() 方法与 lower() 方法类似,返回小写形式(casefolded)的字符串副本,用于 Unicode 字符比较。
- swapcase() 方法用于将字符串中的大写字母转换为小写形式、小写字母转换为大写形式,返回转换后的副本。
以上是关于Python入门教程第84篇 常用字符串方法之大小写转换的主要内容,如果未能解决你的问题,请参考以下文章