如何在 Python 中将字符串变为小写?
- 2024-12-24 08:55:00
- admin 原创
- 78
问题描述:
有没有办法将字符串转换为小写?
"Kilometers" → "kilometers"
请参阅如何将字符串更改为大写?了解相反的内容。
解决方案 1:
使用str.lower()
:
"Kilometer".lower()
解决方案 2:
实现这一点的典型 Python 方式是
>>> 'Kilometers'.lower()
'kilometers'
但是,如果目的是进行不区分大小写的匹配,则应该使用大小写折叠:
>>> 'Kilometers'.casefold()
'kilometers'
原因如下:
>>> "Maße".casefold()
'masse'
>>> "Maße".lower()
'maße'
>>> "MASSE" == "Maße"
False
>>> "MASSE".lower() == "Maße".lower()
False
>>> "MASSE".casefold() == "Maße".casefold()
True
这是 Python 3 中的 str 方法,但在 Python 2 中,您需要查看 PyICU 或 py2casefold -这里有几个答案解决了这个问题。
Unicode Python 3
Python 3将纯字符串文字作为 unicode 处理:
>>> string = 'Километр'
>>> string
'Километр'
>>> string.lower()
'километр'
Python 2,普通字符串文字是字节
在 Python 2 中,粘贴到 shell 中的以下内容使用 将文字编码为字节字符串utf-8
。
并且lower
没有映射字节能够意识到的任何变化,所以我们得到相同的字符串。
>>> string = 'Километр'
>>> string
'xd0x9axd0xb8xd0xbbxd0xbexd0xbcxd0xb5xd1x82xd1x80'
>>> string.lower()
'xd0x9axd0xb8xd0xbbxd0xbexd0xbcxd0xb5xd1x82xd1x80'
>>> print string.lower()
Километр
在脚本中,Python 会反对在未指定编码的字符串中使用非 ASCII(自 Python 2.5 开始,在 Python 2.4 中发出警告)字节,因为预期的编码会产生歧义。有关更多信息,请参阅文档中的 Unicode 操作方法和PEP 263
使用 Unicode 文字,而不是str
文字
因此我们需要一个unicode
字符串来处理这种转换,使用unicode字符串文字可以轻松完成,它使用u
前缀来消除歧义(注意u
前缀在Python 3中也有效):
>>> unicode_literal = u'Километр'
>>> print(unicode_literal.lower())
километр
请注意,字节与字节完全不同str
- 转义字符'/u'
后跟 2 字节宽度,或这些unicode
字母的 16 位表示:
>>> unicode_literal
u'/u041a/u0438/u043b/u043e/u043c/u0435/u0442/u0440'
>>> unicode_literal.lower()
u'/u043a/u0438/u043b/u043e/u043c/u0435/u0442/u0440'
现在,如果我们只有 的形式str
,我们需要将其转换为unicode
。Python 的 Unicode 类型是一种通用编码格式,与大多数其他编码相比具有许多优势。我们可以使用unicode
构造函数或str.decode
带有编解码器的方法将 转换str
为unicode
:
>>> unicode_from_string = unicode(string, 'utf-8') # "encoding" unicode from string
>>> print(unicode_from_string.lower())
километр
>>> string_to_unicode = string.decode('utf-8')
>>> print(string_to_unicode.lower())
километр
>>> unicode_from_string == string_to_unicode == unicode_literal
True
两种方法都转换为unicode类型-与unicode_literal相同。
最佳实践,使用 Unicode
建议您始终使用 Unicode 文本。
软件内部应该只处理 Unicode 字符串,并在输出时转换为特定的编码。
必要时可以编码回去
但是,为了使类型恢复小写str
,需要将 Python 字符串utf-8
再次编码为:
>>> print string
Километр
>>> string
'xd0x9axd0xb8xd0xbbxd0xbexd0xbcxd0xb5xd1x82xd1x80'
>>> string.decode('utf-8')
u'/u041a/u0438/u043b/u043e/u043c/u0435/u0442/u0440'
>>> string.decode('utf-8').lower()
u'/u043a/u0438/u043b/u043e/u043c/u0435/u0442/u0440'
>>> string.decode('utf-8').lower().encode('utf-8')
'xd0xbaxd0xb8xd0xbbxd0xbexd0xbcxd0xb5xd1x82xd1x80'
>>> print string.decode('utf-8').lower().encode('utf-8')
километр
因此在 Python 2 中,Unicode 可以编码为 Python 字符串,并且 Python 字符串可以解码为 Unicode 类型。
解决方案 3:
对于 Python 2,这不适用于 UTF-8 中的非英语单词。在这种情况下decode('utf-8')
可以提供帮助:
>>> s='Километр'
>>> print s.lower()
Километр
>>> print s.decode('utf-8').lower()
километр
解决方案 4:
另外,您可以覆盖一些变量:
s = input('UPPER CASE')
lower = s.lower()
如果你这样使用:
s = "Kilometer"
print(s.lower()) - kilometer
print(s) - Kilometer
只要被调用它就会工作。
解决方案 5:
不要尝试这个,完全不推荐,不要这样做:
import string
s='ABCD'
print(''.join([string.ascii_lowercase[string.ascii_uppercase.index(i)] for i in s]))
输出:
abcd
由于还没有人写过它,你可以使用swapcase
(所以大写字母将变为小写,反之亦然)(你应该在我刚才提到的情况下使用这个(将大写转换为小写,将小写转换为大写)):
s='ABCD'
print(s.swapcase())
输出:
abcd
解决方案 6:
小写
此方法不仅能将拉丁字母表的所有大写字母转换为小写字母,还展示了如何实现这种逻辑。您可以在任何在线 Python 沙箱中测试此代码。
def turnIntoLowercase(string):
lowercaseCharacters = ''
abc = ['a','b','c','d','e','f','g','h','i','j','k','l','m',
'n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M',
'N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
for character in string:
if character not in abc:
lowercaseCharacters += character
elif abc.index(character) <= 25:
lowercaseCharacters += character
else:
lowercaseCharacters += abc[abc.index(character) - 26]
return lowercaseCharacters
string = str(input("Enter your string, please: " ))
print(turnIntoLowercase(string = string))
性能检查
现在,让我们输入以下字符串(然后按Enter
)以确保一切按预期工作:
# Enter your string, please:
"PYTHON 3.11.2, 15TH FeB 2023"
结果:
"python 3.11.2, 15th feb 2023"
解决方案 7:
如果要将字符串列表转换为小写,可以进行 map str.lower
:
list_of_strings = ['CamelCase', 'in', 'Python']
list(map(str.lower, list_of_strings)) # ['camelcase', 'in', 'python']
解决方案 8:
有几种不同的方法可以实现这一点。
使用
.lower()
方法
original_string = "UPPERCASE"
lowercase_string = original_string.lower()
print(lowercase_string) # Output: "uppercase"
使用
str.lower()
original_string = "UPPERCASE"
lowercase_string = str.lower(original_string)
print(lowercase_string) # Output: "uppercase"
使用
str.translate()
和的组合str.maketrans()
original_string = "UPPERCASE"
lowercase_string = original_string.translate(str.maketrans(string.ascii_uppercase, string.ascii_lowercase))
print(lowercase_string) # Output: "uppercase"
解决方案 9:
将字符串转换为小写的方法有很多种。
使用适合您的。
1-.lower()
功能。
语法: string.islower()
特性:
无参数:该
.lower()
方法不接受参数。自动检查:如果在给定的字符串中未找到大写字符,则返回原始字符串。
忽略字符串之外的任何内容:它忽略字符串之间的数字、符号、唯一事物等。
例如:(不接受任何争论)
message = 'I LOVE Python'
# convert message to lowercase
print(message.lower())
运行代码片段Hide results展开片段
输出:
我喜欢 Python
例如:(忽略数字)
# example string
string = "THIS SHOULD BE LOWERCASE!"
print(string.lower())
# string with numbers
# all alphabets should be lowercase
string = "Th!s Sh0uLd B3 L0w3rCas3!"
print(string.lower())
运行代码片段Hide results展开片段
这应该是小写的!th!s sh0uld b3 l0w3rcas3!
独特用法:使用你可以比较两个字符串
# first string
firstString = "I AM ALI!"
# second string
secondString = "i aM AlI!"
if(firstString.lower() == secondString.lower()):
print("The strings are same.")
else:
print("The strings are not same.")
运行代码片段Hide results展开片段
输出:字符串相同。
2-SwapCase
功能
它将更换整个箱子。
s = 'IAMALI'
print(s.swapcase())
运行代码片段Hide results展开片段
输出:
伊马利
3-casefold()
功能
更强大的转换: casefold()方法更强大,更积极,这意味着它会将更多字符转换为小写并发现更多匹配。
s = 'IAmAli'
print(s.casefold())
运行代码片段Hide results展开片段
输出:
伊马利
希望有帮助。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)