如何在 Python 中将字符串变为小写?

2024-12-24 08:55:00
admin
原创
79
摘要:问题描述:有没有办法将字符串转换为小写?"Kilometers" → "kilometers" 请参阅如何将字符串更改为大写?了解相反的内容。解决方案 1:使用str.lower():"Kilometer".lower() 解决方案 2:实现这一...

问题描述:

有没有办法将字符串转换为小写?

"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带有编解码器的方法将 转换strunicode

>>> 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:

有几种不同的方法可以实现这一点。

  1. 使用.lower()方法

original_string = "UPPERCASE"
lowercase_string = original_string.lower()
print(lowercase_string)  # Output: "uppercase"
  1. 使用str.lower()

original_string = "UPPERCASE"
lowercase_string = str.lower(original_string)
print(lowercase_string)  # Output: "uppercase"
  1. 使用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展开片段

输出:

伊马利

希望有帮助。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1124  
  IPD(Integrated Product Development,集成产品开发)流程是一种广泛应用于高科技和制造业的产品开发方法论。它通过跨职能团队的紧密协作,将产品开发周期缩短,同时提高产品质量和市场成功率。在IPD流程中,CDCP(Concept Decision Checkpoint,概念决策检查点)是一个关...
IPD培训课程   79  
  研发IPD(集成产品开发)流程作为一种系统化的产品开发方法,已经在许多行业中得到广泛应用。它不仅能够提升产品开发的效率和质量,还能够通过优化流程和资源分配,显著提高客户满意度。客户满意度是企业长期成功的关键因素之一,而IPD流程通过其独特的结构和机制,能够确保产品从概念到市场交付的每个环节都围绕客户需求展开。本文将深入...
IPD流程   70  
  IPD(Integrated Product Development,集成产品开发)流程是一种以跨职能团队协作为核心的产品开发方法,旨在通过优化资源分配、提高沟通效率以及减少返工,从而缩短项目周期并提升产品质量。随着企业对产品上市速度的要求越来越高,IPD流程的应用价值愈发凸显。通过整合产品开发过程中的各个环节,IPD...
IPD项目管理咨询   82  
  跨部门沟通是企业运营中不可或缺的一环,尤其在复杂的产品开发过程中,不同部门之间的协作效率直接影响项目的成败。集成产品开发(IPD)作为一种系统化的项目管理方法,旨在通过优化流程和增强团队协作来提升产品开发的效率和质量。然而,跨部门沟通的复杂性往往成为IPD实施中的一大挑战。部门之间的目标差异、信息不对称以及沟通渠道不畅...
IPD是什么意思   74  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用