字符串(string)篇(一)

文章目录

  • 1.1 capitalize()函数
  • 1.2 casefold()函数
  • 1.3 center()函数
  • 1.4 count()函数
  • 1.5 decode()函数
  • 1.6 encode()函数
  • 1.7 endswith()函数
  • 1.8 expandtabs()函数
  • 1.9 find()函数

1.1 capitalize()函数

在Python中,capitalize() 是一个字符串(string)方法,用于将字符串的第一个字符转换为大写,而其余字符转换为小写。如果字符串的第一个字符已经是大写或者字符串为空,则该方法不会有任何效果。

以下是 capitalize() 方法的简单示例:

# 定义一个字符串
s = "hello world"# 使用capitalize()方法
capitalized_s = s.capitalize()# 输出结果
print(capitalized_s)  # 输出 "Hello world"

在这个例子中,capitalize() 方法将字符串 s 的第一个字符 ‘h’ 转换为大写,并保留了其余字符 ‘ello world’ 的小写形式。

如果你想要将一个字符串中的每个单词的首字母都转换为大写(即“标题化”),你应该使用 title() 方法,而不是 capitalize()。

# 定义一个字符串
s = "hello world"# 使用title()方法
titled_s = s.title()# 输出结果
print(titled_s)  # 输出 "Hello World"

在这个例子中,title() 方法将字符串 s 中的每个单词的首字母都转换为大写,其余字母则转换为小写。

1.2 casefold()函数

casefold() 是 Python 中的一个字符串方法,用于将字符串转换为“折叠”形式,这通常意味着将所有字符转换为小写,并可能进一步规范化某些字符以使其不区分大小写。这个方法对于执行不区分大小写的字符串比较特别有用。

casefold() 和 lower() 方法之间的主要区别在于,casefold() 提供了更全面的不区分大小写的转换。例如,德语中的 “ß” 字符在 lower() 方法下仍然保持为 “ß”,但在 casefold() 方法下会转换为 “ss”。

下面是一个简单的例子:

s1 = "Hello, World!"
s2 = "hello, world!"# 使用 lower() 方法
s1_lower = s1.lower()
s2_lower = s2.lower()
print(s1_lower == s2_lower)  # 输出: True# 使用 casefold() 方法
s1_casefold = s1.casefold()
s2_casefold = s2.casefold()
print(s1_casefold == s2_casefold)  # 输出: True# 对于德语中的 "ß" 字符
s3 = "Straße"
s4 = "strasse"# 使用 lower() 方法
s3_lower = s3.lower()
s4_lower = s4.lower()
print(s3_lower == s4_lower)  # 输出: False,因为 "ß" 没有转换为 "ss"# 使用 casefold() 方法
s3_casefold = s3.casefold()
s4_casefold = s4.casefold()
print(s3_casefold == s4_casefold)  # 输出: True,因为 "ß" 被转换为 "ss"

在这个例子中,lower() 方法将所有字符转换为小写,但德语中的 “ß” 字符保持原样。而 casefold() 方法则进一步将 “ß” 转换为 “ss”,使得两个字符串在不区分大小写的情况下相等。

总的来说,casefold() 提供了一个更全面的方法来处理不同语言中的字符,以便进行不区分大小写的比较。

1.3 center()函数

在Python的字符串(string)模块中,并没有一个名为center()的内置函数。但在Python的字符串(str)对象自身中,确实有一个center()方法。这个方法用于返回一个原字符串居中,并使用指定的字符(默认为空格)填充至指定长度的新字符串。

center()方法的语法如下:

str.center(width[, fillchar])
  • width:表示返回的新字符串的总长度。如果原字符串的长度大于width,则原字符串将被截断至width长度。
  • fillchar:可选参数,用于填充新字符串中除原字符串外的部分,默认为空格字符。

示例:

s = "hello"# 居中对齐,总长度为10,使用空格填充
centered_s = s.center(10)
print(centered_s)  # 输出 "   hello   "# 居中对齐,总长度为10,使用"-"填充
centered_s_dash = s.center(10, "-")
print(centered_s_dash)  # 输出 "---hello---"# 如果原字符串长度大于指定宽度,则会被截断
long_s = "hello world"
truncated_s = long_s.center(10)
print(truncated_s)  # 输出 "hello worl"

在这个例子中,s.center(10)将字符串"hello"居中,并在其两侧填充空格,使得整个字符串的长度为10。类似地,s.center(10, “-”)会在两侧填充字符"-"。如果字符串长度大于指定的宽度,那么字符串将被截断以适应指定的宽度。

1.4 count()函数

在Python中,count()是一个字符串方法,用于计算子字符串在母字符串中出现的次数。这个方法返回子字符串在母字符串中非重叠出现的次数。

以下是count()方法的基本语法:

str.count(sub[, start[, end]])
  • sub:要搜索的子字符串。
  • start:可选参数,指定搜索的开始位置。
  • end:可选参数,指定搜索的结束位置。

如果提供了start和end参数,那么count()方法将只计算在这个范围内子字符串出现的次数。

下面是一些使用count()方法的例子:

# 简单的计数
s = "hello world, hello Python"
count = s.count("hello")
print(count)  # 输出: 2# 使用起始和结束位置
count_range = s.count("hello", 7, 20)  # 从索引7开始,到索引20结束(不包含20)
print(count_range)  # 输出: 1# 子字符串不在母字符串中
count_none = s.count("goodbye")
print(count_none)  # 输出: 0

在第一个例子中,子字符串"hello"在母字符串中出现了两次。

在第二个例子中,我们计算了从索引7到索引20(不包含20)之间子字符串"hello"出现的次数,结果是1,因为只有一个"hello"在这个范围内。

在第三个例子中,子字符串"goodbye"并不在母字符串中,所以返回的次数是0。

count()方法只计算非重叠的出现次数,如果子字符串在母字符串中有重叠部分,它也会被计算为多次出现。

# 重叠计数
s = "abab"
count_overlap = s.count("aba")
print(count_overlap)  # 输出: 1

在这个例子中,尽管"aba"和"bab"有重叠的字符,但count()方法只计算了一次非重叠的出现。

1.5 decode()函数

在Python中,decode()是一个常用于字节串(bytes)对象的方法,用于将字节串解码为字符串。这个方法通常与编码方法encode()相对应,后者用于将字符串编码为字节串。

当你处理从文件、网络或其他来源获取的原始字节数据时,经常需要使用decode()方法将其转换为人类可读的字符串形式。

decode()方法的基本语法如下:

bytes_obj.decode(encoding='utf-8', errors='strict')
  • encoding:指定解码时使用的字符编码。如果不指定,则默认为utf-8。
  • errors:指定处理解码错误的方式。默认为strict,表示遇到错误时抛出异常;也可以设置为ignore以忽略错误,或者设置为replace以用问号?替换错误的部分。

下面是一个使用decode()方法的例子:

# 编码一个字符串为字节串
encoded_bytes = "你好,世界".encode('utf-8')
print(encoded_bytes)  # 输出: b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c'# 解码字节串为字符串
decoded_str = encoded_bytes.decode('utf-8')
print(decoded_str)  # 输出: 你好,世界# 如果尝试用错误的编码解码,将会抛出异常
try:wrong_decoded_str = encoded_bytes.decode('ascii')
except UnicodeDecodeError as e:print("解码错误:", e)# 使用errors参数来处理解码错误
safer_decoded_str = encoded_bytes.decode('ascii', errors='replace')
print(safer_decoded_str)  # 输出: ???,???

在这个例子中,我们首先使用encode()方法将字符串"你好,世界"编码为UTF-8编码的字节串。然后,我们使用decode()方法将这个字节串解码回原始的字符串。如果尝试使用错误的编码(如ASCII)来解码包含非ASCII字符的字节串,将会抛出UnicodeDecodeError异常。通过设置errors参数为replace,我们可以避免异常,并用问号替换无法解码的部分。

1.6 encode()函数

在Python中,encode()是一个字符串(str)对象的方法,用于将字符串编码为字节串(bytes)。当你需要将字符串发送到网络、保存到文件或进行其他需要字节数据的操作时,通常会使用encode()方法。

encode()方法的基本语法如下:

str.encode(encoding='utf-8', errors='strict')
  • encoding:指定用于编码的字符集。如果不指定,则默认为utf-8。常用的字符集编码还有ascii、latin1、iso-8859-1等。
  • errors:指定如何处理编码错误。默认为strict,表示遇到编码错误时抛出异常;也可以设置为ignore以忽略错误;或者设置为replace以用问号?替换错误的部分。

下面是一个使用encode()方法的例子:

# 编码一个字符串为UTF-8字节串
s = "你好,世界"
encoded_bytes = s.encode('utf-8')
print(encoded_bytes)  # 输出: b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c'# 尝试用错误的编码
try:encoded_bytes = s.encode('ascii')
except UnicodeEncodeError as e:print("编码错误:", e)# 使用errors参数来处理编码错误
safe_encoded_bytes = s.encode('ascii', errors='replace')
print(safe_encoded_bytes)  # 输出: b'??,??'

在这个例子中,我们首先使用encode()方法将包含非ASCII字符的字符串"你好,世界"编码为UTF-8字节串。然后,我们尝试使用ASCII编码来编码这个字符串,由于ASCII不支持中文字符,所以抛出了UnicodeEncodeError异常。最后,我们通过设置errors参数为replace来避免异常,并用问号?替换了无法编码的字符。

encode()方法的返回值是一个字节串(bytes)对象,它包含编码后的字节数据。这个字节串对象可以用于网络传输、文件写入或其他需要二进制数据的场景。

1.7 endswith()函数

在Python中,endswith()是一个字符串方法,用于检查字符串是否以指定的后缀结束。如果字符串以指定的后缀结束,则返回True,否则返回False。

以下是endswith()方法的基本语法:

str.endswith(suffix[, start[, end]])
  • suffix:要检查的后缀字符串。
  • start:可选参数,指定检查的起始位置。
  • end:可选参数,指定检查的结束位置。

如果提供了start和end参数,那么endswith()方法将只在这个范围内检查后缀。

下面是一些使用endswith()方法的例子:

# 简单的检查
s = "Hello, World!"
print(s.endswith("World!"))  # 输出: True
print(s.endswith("Python"))  # 输出: False# 使用起始和结束位置
print(s.endswith("o", 0, 5))  # 在索引0到4的范围内检查"o"
# 输出: True,因为在"Hello"中确实以"o"结尾# 不考虑大小写检查
print(s.endswith("world!", 7))  # 输出: False,因为默认是区分大小写的
print(s.lower().endswith("world!"))  # 输出: True,转换为小写后检查# 使用元组检查多个后缀
suffixes = (".txt", ".doc", ".pdf")
print(s.endswith(suffixes))  # 输出: False,因为s不以这些后缀中的任何一个结尾# 检查多个后缀中的一个
print(s.endswith(".txt", ".doc", ".pdf"))  # 输出: False,因为语法不正确
# 正确的做法是使用元组
print(s.endswith((".txt", ".doc", ".pdf")))  # 输出: False

在第一个例子中,字符串s以"World!"结束,所以endswith(“World!”)返回True。

在第二个例子中,我们指定了检查的范围,只在索引0到4的范围内查找后缀"o",因为在这个范围内字符串确实以"o"结束,所以返回True。

在第三个例子中,我们展示了如何不区分大小写地检查后缀。默认情况下,endswith()是区分大小写的,但可以通过将字符串转换为全小写(或全大写)来执行不区分大小写的检查。

最后一个例子展示了如何使用元组来检查多个后缀。注意,你不能直接将多个参数传递给endswith(),而是需要将这些后缀放在一个元组中。然而,检查多个后缀时,只需传递一个元组参数即可。

1.8 expandtabs()函数

在Python中,expandtabs()是字符串(str)对象的一个方法,用于将字符串中的制表符(tab)转换为空格。默认情况下,它会把每个制表符替换为8个空格,但你也可以通过指定tabsize参数来更改这个数量。

expandtabs()方法的基本语法如下:

str.expandtabs(tabsize=8)
  • tabsize:指定制表符应被扩展为的空格数。如果不提供此参数,则默认值为8。

下面是一个使用expandtabs()方法的例子:

# 定义一个包含制表符的字符串
s = "Hello\tWorld"# 使用默认的8个空格扩展制表符
expanded_s = s.expandtabs()
print(expanded_s)  # 输出: Hello       World# 使用4个空格扩展制表符
expanded_s_4 = s.expandtabs(4)
print(expanded_s_4)  # 输出: Hello    World

在这个例子中,字符串s包含一个制表符,它默认被替换为8个空格。当我们调用expandtabs(4)时,制表符被替换为4个空格。

expandtabs()方法通常用于文本处理,特别是在你需要确保文本在不同的环境中具有一致的格式时,比如在写入文件或在网络协议中使用。通过使用expandtabs(),你可以确保文本中不会由于制表符和空格的混合使用而导致布局混乱。

1.9 find()函数

在Python中,find()是一个字符串(str)对象的方法,用于查找子字符串在字符串中首次出现的位置。如果找到子字符串,则返回其起始索引(从0开始计数);如果没有找到,则返回-1。

find()方法的基本语法如下:

str.find(sub[, start[, end]])
  • sub:要查找的子字符串。
  • start:可选参数,指定查找的起始位置。
  • end:可选参数,指定查找的结束位置。

下面是一些使用find()方法的例子:

# 查找子字符串的起始位置
s = "Hello, World!"
index = s.find("World")
print(index)  # 输出: 7,因为"World"在s中从索引7开始# 如果子字符串不存在,则返回-1
index = s.find("Python")
print(index)  # 输出: -1,因为"Python"不在s中# 使用起始和结束位置来限制搜索范围
index = s.find("o", 0, 5)  # 在索引0到4的范围内查找"o"
print(index)  # 输出: 4,因为在"Hello"中"o"的索引是4# find()方法区分大小写
index = s.find("world")  # "world"是小写,而s中的是"World"
print(index)  # 输出: -1,因为大小写不匹配# 使用负索引从字符串末尾开始搜索
index = s.find("o", -10)  # 从距离末尾10个字符的位置开始搜索"o"
print(index)  # 输出: 7,因为在"World"中"o"的索引是7

在第一个例子中,我们查找子字符串"World"在字符串s中的位置,并打印其起始索引。在第二个例子中,我们查找一个不存在的子字符串,并验证find()返回-1。在第三个例子中,我们限制了搜索范围。在第四个例子中,我们展示了find()方法是区分大小写的。在最后一个例子中,我们使用了负索引来从字符串的末尾开始搜索。

请注意,find()方法只能查找子字符串首次出现的位置。如果你想找到所有匹配的子字符串的位置,你可能需要使用其他方法,如正则表达式或循环调用find()并更新搜索的起始位置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/758450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SkyWalking上报Java应用数据

重要 本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。 通过SkyWalking为应用埋点并上报链路数据至可观测链路 OpenTelemetry 版后,可观测链路 OpenTelemetry 版即可开始监控应用,您可以…

cyclictest 交叉编译报错---rt_numa.h:18:10: fatal error: numa.h: 没有那个文件或目录

cyclictest 主要是用于测试系统延时,进而判断系统的实时性 使用版本 rt-tests-2.6.tar.gz numactl v2.0.16 问题 编译时,需要先编译 numactl ,不然会有以下报错: arm-linux-gnueabihf-gcc -D VERSION2.6 -c src/cyclictest/c…

软考 网工 每日学习打卡 2024/3/19

学习内容 第8章 网络安全 本章主要讲解网络安全方面的基础知识和应用技术。针对考试应该掌握诸如数据加密、报文认 证、数字签名等基本理论,在此基础上深入理解网络安全协议的工作原理,并能够针对具体的 网络系统设计和实现简单的安全解决方案。 本章共有…

量化交易入门(七)Python开发-面向对象和类

在Python中,面向对象(OO)是一种编程范式或思想,它将现实世界中的实体抽象为对象(Object),通过对象之间的交互来解决问题,在量化交易中,它可以帮助我们更好地组织和管理复杂的交易策略和系统。在面向对象编程中,我们把数据和操作数据的方法封装在对象内部…

Day22初识集合

Day22初识集合 一、集合 1、概念: 集合是指将多个元素组合在一起的数据结构。在编程中,集合用于存储和操作一组相关的数据对象。与数组相比,集合具有更灵活、动态和高级的功能。 2、常见的集合类: List(列表&#x…

454.四数相加

给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 方法一&#xff1a; 双层for循环&#xff0c;将nums1、…

KY115 后缀字串排序

描述&#xff1a; 对于一个字符串&#xff0c;将其后缀子串进行排序&#xff0c;例如grain 其子串有&#xff1a; grain rain ain in n 然后对各子串按字典顺序排序&#xff0c;即&#xff1a; ain,grain,in,n,rain 输入描述&#xff1a; 每个案例为一行字符串。 输出描述&…

JS的Document属性和方法

在javascript中&#xff0c;document对象是一个非常重要的全局对象&#xff0c;它代表整个html文档。你可以通过document对象来访问和修改html文档的内容和结构。以下是一些常见的document属性和方法&#xff1a; 属性 1、document.title&#xff1a;获取或设置文档的标题&am…

HTML 特殊元素:展示PDF、展示JSON 数据

<pre> 标签 (preformatted text) <pre> 标签用来表示预格式化的文本内容 在页面数据展示时&#xff0c;后端返回了一段未经处理的JSON 数据&#xff0c;将这段数据在页面正常展示&#xff0c;让可读性更高。 {/"project": {/ "title": "…

TSP问题消除子环

个人感觉看这一个就够了&#xff01;&#xff01;&#xff01; 优化│TSP中两种不同消除子环路的方法及callback实现&#xff08;Python调用Gurobi求解&#xff09; 刘兴禄运筹学修炼日记&#xff1a;TSP中两种不同消除子环路的方法及callback实现&#xff08;Python调用Guro…

sentry-cli - error: Failed to load .sentryclirc file from project path

Xcode 15.2 warning sentry-cli - error: Failed to load .sentryclirc file from project path (/Users/zhuhongwei/Desktop/pandabill/.sentryclirc)推荐一下刚上线的 App 熊猫小账本&#xff0c;里面有用到这篇博客讲的内容 熊猫小账本 一个简洁的记账 App&#xff0c;用于…

1、鸿蒙学习-为应用/服务进行签名

针对应用/服务的签名&#xff0c;DevEco Studio为开发者提供了自动签名方案&#xff0c;帮助开发者高效进行调试。也可选择手动方式对应用/服务进行签名&#xff0c;如果使用了需要ACL的权限&#xff0c;需采用手动方式进行签名。 自动签名 说明 使用自动签名前&#xff0c;请…

AI智能报表助手

AI智能报表助手 目标&#xff1a;通过对话一句话智能引导出报表 NL2SQL 自然语言转换为sql 数据集 ATIS&GeoQuery数据集&#xff1a;ATIS数据集来源于机票订阅系统&#xff0c;与美国的地理相关&#xff0c;包含880条问题及对应的SQL语句&#xff0c;属于单一领域但上…

C++ 【深基3.习8】三角形分类

文章目录 一、题目描述【深基3.习8】三角形分类题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 样例 #3样例输入 #3样例输出 #3 样例 #4样例输入 #4样例输出 #4 提示 二、参考代码 一、题目描述 【深基3.习8】三角形分类 题目描述 给…

闭包机制的底层实现原理

说明:此次分享不涉及ES6的let,const,块级作用域,这些其实都是对本次分享内容的扩展。 闭包的重要性 JS的内功心法,闭包是JavaScript中非常重要的核心概念,关系着JS里很多核心的机制,理解了它,很多问题都会迎刃而解,不理解闭包用JS永远像隔着一层窗户纸。 前端发展日新…

【MySQL】学习和总结使用列子查询查询员工工资信息

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-5odctDvQ0AHJJc1C {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

中国(京津冀)太阳能光伏推进大会暨展览会

中国(京津冀)太阳能光伏推进大会暨展览会是一个旨在促进太阳能光伏产业的发展的重要活动。该活动旨在加大对太阳能光伏的投资和支持&#xff0c;推动太阳能光伏技术的创新和应用&#xff0c;促进太阳能光伏产业的规模化发展。 此次大会暨展览会将为太阳能光伏行业相关企业提供一…

LeetCode刷题记录——day2

https://leetcode.cn/problems/product-of-array-except-self/description/?envTypestudy-plan-v2&envIdtop-interview-150 问题在于不使用除法并且空间复杂度为O(1)&#xff0c;当第一次从头开始遍历时由于不知道后续数组元素是什么&#xff0c;所以无法得到答案&#xf…

Python 枚举(Python Enumerations)

Python 枚举&#xff08;Enumerations&#xff09;是一种用于创建命名的常量集合的方法。它提供了一种更好地组织代码、增加可读性和可维护性的方式&#xff0c;特别是在需要表示一组相关常量时。 Python 的枚举是通过 enum 模块实现的&#xff0c;它在 Python 3.4 版本之后成…