Python字符串小写转换方法详解

Python字符串小写转换方法详解

技术背景

在Python编程中,将字符串转换为小写是一个常见的需求,比如在进行字符串比较时忽略大小写,或者对文本进行统一格式处理等。Python提供了多种方法来实现字符串的小写转换,并且在不同版本中处理非ASCII字符的方式有所不同。

实现步骤

Python 3

在Python 3中,普通字符串字面量被当作Unicode处理,使用str.lower()方法可以直接将字符串转换为小写。

1
2
string = 'Kilometer'
print(string.lower())

对于非ASCII字符,同样可以直接使用lower()方法:

1
2
string = 'Километр'
print(string.lower())

Python 2

在Python 2中,普通字符串字面量是字节类型,对于非ASCII字符,直接使用lower()方法不会有预期的转换效果。

1
2
string = 'Километр'
print(string.lower()) # 输出还是原字符串

需要将其转换为Unicode类型,可以使用Unicode字符串字面量或者将字节字符串进行解码:

1
2
3
4
5
6
7
8
9
10
11
# 使用Unicode字符串字面量
unicode_literal = u'Километр'
print(unicode_literal.lower())

# 将字节字符串解码为Unicode
string = 'Километр'
unicode_from_string = unicode(string, 'utf-8')
print(unicode_from_string.lower())

string_to_unicode = string.decode('utf-8')
print(string_to_unicode.lower())

其他情况

  • 大小写不敏感比较:可以使用casefold()方法,它比lower()更强大,能处理一些特殊字符的大小写转换,用于大小写不敏感的比较更合适。
1
2
3
print("Maße".casefold())
print("Maße".lower())
print("MASSE".casefold() == "Maße".casefold())
  • 列表中字符串转换:可以使用map()函数结合str.lower来将列表中的字符串都转换为小写。
1
2
list_of_strings = ['CamelCase', 'in', 'Python']
print(list(map(str.lower, list_of_strings)))
  • 部分字符转换:使用str.translate()str.maketrans()方法的组合可以实现部分字符的大小写转换。
1
2
3
s = 'ABC ABC'
s = s.translate(str.maketrans('AC', 'ac'))
print(s)

核心代码

使用str.lower()方法

1
2
3
original_string = "UPPERCASE"
lowercase_string = original_string.lower()
print(lowercase_string) # 输出: "uppercase"

使用str.lower()函数形式

1
2
3
original_string = "UPPERCASE"
lowercase_string = str.lower(original_string)
print(lowercase_string) # 输出: "uppercase"

使用str.translate()str.maketrans()组合

1
2
3
4
import string
original_string = "UPPERCASE"
lowercase_string = original_string.translate(str.maketrans(string.ascii_uppercase, string.ascii_lowercase))
print(lowercase_string) # 输出: "uppercase"

最佳实践

建议在Python编程中始终使用Unicode处理文本,即按照“软件应该在内部仅使用Unicode字符串,在输出时转换为特定编码”的原则。如果需要将小写后的Unicode字符串转换回字节类型,可以使用encode()方法。

1
2
3
4
string = 'Километр'
lowercase_unicode = string.decode('utf-8').lower()
lowercase_bytes = lowercase_unicode.encode('utf-8')
print(lowercase_bytes)

常见问题

  • Python 2中处理非ASCII字符:直接使用lower()方法无效,需要先将字节字符串转换为Unicode字符串,可以使用unicode()函数或者decode()方法。
  • 大小写不敏感比较:使用lower()方法在处理一些特殊字符时可能不准确,建议使用casefold()方法。

此外,不建议使用手动编写的复杂方法来实现大小写转换,如使用string.ascii_uppercasestring.ascii_lowercase手动映射,既复杂又容易出错。


Python字符串小写转换方法详解
https://119291.xyz/posts/2025-05-13.python-string-lowercase-conversion/
作者
ww
发布于
2025年5月13日
许可协议