百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

python散装笔记——41: 字符串的方法(2)

itomcoil 2025-02-09 12:37 15 浏览

6: 逆转字符串

使用内置的 reversed() 函数可以反转字符串,该函数接收一个字符串,并以相反的顺序返回一个迭代器。

>>> reversed('hello')

>>> [char for char in reversed('hello')]
['o', 'l', 'l', 'e', 'h']

reversed() 可以封装在对 ''.join()的调用中,以便从迭代器生成一个字符串。

>>> ''.join(reversed('hello'))
'olleh'

对于不熟悉 Python 的用户来说,使用 reversed() 可能更易读,而使用步长为 -1 的扩展切片则更快更简洁。在此,尝试用函数来实现它:

>>> def reversed_string(main_string):
...     return main_string[::-1]
...
>>> reversed_string('hello')
'olleh'

7: 根据分隔符将字符串拆分为字符串列表

str.split(sep=None, maxsplit=-1)

str.split 接收一个字符串,并返回原始字符串的子串列表。不同的行为取决于是否提供或省略 sep 参数。

如果没有提供 sep,或者 sepNone,那么只要有空白,就会进行拆分。但是,前导和尾部空白将被忽略,多个连续的空白字符将被视为单个空白字符:

>>> "This is a sentence.".split()
['This', 'is', 'a', 'sentence.']
>>> " This is a sentence. ".split()
['This', 'is', 'a', 'sentence.']
>>> " ".split()
[]

参数 sep 可用来定义分隔符字符串。原始字符串会在出现分隔符字符串的地方被分割,而分隔符本身则会被丢弃。多个连续的定界符与单个出现的定界符处理方式不同,而是创建空字符串。

>>> "This is a sentence.".split(' ')
['This', 'is', 'a', 'sentence.']

>>> "Earth,Stars,Sun,Moon".split(',')
['Earth', 'Stars', 'Sun', 'Moon']

>>> " This is a sentence. ".split(' ')
['', 'This', 'is', '', '', '', 'a', 'sentence.', '', '']

>>> "This is a sentence.".split('e')
['This is a s', 'nt', 'nc', '.']

>>> "This is a sentence.".split('en')
['This is a s', 't', 'ce.']

默认情况下,分隔符每次出现时都会进行分隔,但 maxsplit 参数会限制分隔的次数。默认值 -1 表示没有限制:

>>> "This is a sentence.".split('e', maxsplit=0)
['This is a sentence.']

>>> "This is a sentence.".split('e', maxsplit=1)
['This is a s', 'ntence.']

>>> "This is a sentence.".split('e', maxsplit=2)
['This is a s', 'nt', 'nce.']

>>> "This is a sentence.".split('e', maxsplit=-1)
['This is a s', 'nt', 'nc', '.']

str.rsplit(sep=None, maxsplit=-1)

当指定了 maxsplit 时,str.rsplit(“右拆分”)与 str.lsplit(“左拆分”)不同。分割从字符串的末尾而不是开头开始:

>>> "This is a sentence.".rsplit('e', maxsplit=1)
['This is a sentenc', '.']
>>> "This is a sentence.".rsplit('e', maxsplit=2)
['This is a sent', 'nc', '.']

注意:Python 规定了执行拆分的最大次数,而大多数其他编程语言则规定了创建子串的最大次数。这可能会在移植或比较代码时造成混淆。

8: 用另一个子串替换一个子串的所有出现次数

Python 的 str 类型也有一个在给定字符串中用另一个子字符串替换一个子字符串的方法。对于要求更高的情况,可以使用 re.sub

str.replace(old, new[, count]):

str.replace接收两个参数 oldnew,其中 old 包含要被 new sub-string替换的old sub-string。可选参数 count 指定要替换的次数:

例如,为了用'spam'替换下面字符串中的'foo',我们可以调用old = 'foo'new = 'spam'str.replace

>>> "Make sure to foo your sentence.".replace('foo', 'spam')
"Make sure to spam your sentence."

如果给定字符串中包含多个与旧参数匹配的示例,则所有出现的示例都会被新参数中提供的值替换:

>>> "It can foo multiple examples of foo if you want.".replace('foo', 'spam')
"It can spam multiple examples of spam if you want."

当然,除非我们为 count 提供一个值。在这种情况下,出现的计数将被替换:

>>> """It can foo multiple examples of foo if you want, or you can limit the foo with the third argument.""".replace('foo', 'spam', 1)
'It can spam multiple examples of foo if you want, or you can limit the foo with the third
argument.'

9: 测试字符串的组成

Python 的 str 类型也有许多方法可以用来评估字符串的内容。这些方法是 str.isalphastr.isdigitstr.isalnumstr.isspace。还可以使用 str.isupperstr.islowerstr.istitle测试大小写。

str.isalpha

例如,str.isalpha 不需要参数,如果给定字符串中的所有字符都是字母,则返回 True

>>> "Hello World".isalpha() # 包含空格
False
>>> "Hello2World".isalpha() # 包含一个数字
False
>>> "HelloWorld!".isalpha() # 包含标点符号
False
>>> "HelloWorld".isalpha()
True

作为一种边缘情况,空字符串在与 "".isalpha() 一起使用时会求值为 False

str.isupper, str.islower, str.istitle

这些方法测试给定字符串中的大写程度。

str.isupper 是一个方法,如果给定字符串中的所有字符都是大写字母,则返回 True,否则返回 False

"HeLLO WORLD".isupper()
False
"HELLO WORLD".isupper()
True
"".isupper()
False

相反,str.islower 是一种方法,如果给定字符串中的所有字符都是小写,则返回 true,否则返回 false

"Hello world".islower()
False
"hello world".islower()
True
"".islower()
False

如果给定字符串是标题式的,即每个单词都以大写字母开头,然后是小写字母,则 str.istitle 返回 True

>>> "hello world".istitle()
False
>>> "Hello world".istitle()
False
>>> "Hello World".istitle()
True
>>> "".istitle()
False

str.isdecimal, str.isdigit, str.isnumeric

str.isdecimal 返回字符串是否为适合表示十进制数的十进制数序列。

str.isdigit 包括不适合表示十进制数的数字,例如上标数字。

str.isnumeric 包括任何数字值,即使不是数字,例如 0-9 范围以外的值。


isdecimal

isdigit

isnumeric

12345

True

True

True

?2??5

True

True

True

?23?????

False

True

True

??

False

False

True

Five

False

False

False

字节字符串(Python 3 中为 bytes,Python 2 中为 str)只支持 isdigit,它只检查基本的 ASCII 数字。与 str.isalpha 一样,空字符串的值为 False

str.isalnum

这是str.isalphastr.isnumeric的组合,具体地说,如果给定字符串中的所有字符都是alphanumeric,即由字母或数字字符组成,则其值为true

>>> "Hello2World".isalnum()
True
>>> "HelloWorld".isalnum()
True
>>> "2016".isalnum()
True
>>> "Hello World".isalnum() # contains whitespace
False

str.isspace

如果字符串只包含空格字符,其值为 True

>>> "\t\r\n".isspace()
True
>>> " ".isspace()
True

有时,一个字符串看起来是 "empty" 的,但我们不知道这是因为它只包含空白还是根本不包含任何字符

>>> "".isspace()
False

为了应对这种情况,我们需要额外的测试

>>> my_str = ''
>>> my_str.isspace()
False
>>> my_str.isspace() or not my_str
True

但测试字符串是否为空或是否只包含空白字符的最简便方法是使用 strip(不带参数,它会删除所有前导和尾部空白字符)。

>>> not my_str.strip()
True

相关推荐

MySql安装与使用

介绍mysql是目前最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem:关系数据库管理系统)应用软件...

使用AI来搭建一个用户系统,步骤应该是怎样的呢?

我给AI的第一个问题是这样的:创建一个java21+springboot3.4+mysql21的一个用户系统,需要使用JWT,支持多语言,使用swagger,这个用户系统都应该包含哪...

Mysql 8.4数据库安装、新建用户和数据库、表单

1、下载MySQL数据库yuminstall-ywgetperlnet-toolslibtirpc#安装wget和perl、net-tools、libtirpcwgethtt...

介绍如何在 MySQL 中创建新用户并授予权限?

MySQL是一个开源的关系型数据库管理系统,常用于存储和管理大量的结构化数据。在使用MySQL进行数据管理时,为了安全和方便管理,通常需要创建新用户并授予相应的权限。本文将介绍如何在MySQL...

Mysql创建用户和权限管理

MySQL是一个多用户的数据库,最高权限管理者是root用户,它拥有着最高的权限操作。包括select、update、delete、update、grant等操作。如果有其他用户想使用MySQL,那么...

Mysql:创建用户详解

1、创建并授权用户--创建可从任何主机连接的用户CREATEUSER'myuser'@'%'IDENTIFIEDBY'mypassword'...

Python 实现【字符匹配】

defis_match(s,pattern):m,n=len(s),len(pattern)dp=[[False]*(n+1)for_inrange...

Python自动化:openpyxl工作簿、工作表相关操作

新建工作簿、工作表importopenpyxl#创建空白工作簿,会自动生成一个工作表:Sheetwb=openpyxl.Workbook()#新建工作表#create_sheet...

python每日一练之三数排序

概述今天主要分享一个三树排序的实例,大家可以自己测试玩一下~需求输入三个整数x,y,z,请把这三个数由小到大输出。方法一:如果是要练练手就随便找个排序算法实现一下#usr/bin/python#...

Python输出语句print()

Python中的输出语句主要通过内置函数print()实现,它可以灵活输出文本、变量、表达式结果等内容到控制台或其他文件。以下是详细介绍及示例:一、print()基本语法print(*object...

Python设置excel表格格式,这3个属性6个模块,要表格好看

前言:通过前面两篇文章,我们用Python处理excel数据得到了结果并保存了文件。打开文件会发现,文件里表格是没有设置格式的,还需手动调整行高列宽等样式,很麻烦。其实,通过Python库模块,能轻松...

python入门-day5-循环语句

以下是为“Day5:循环语句”设计的详细学习任务计划。这个任务旨在帮助初学者掌握Python中的循环语句(for和while),并通过实践理解它们的应用场景。Day5:循环语句学习目标...

Python基础编程必备!涵盖常见语法与操作的代码示例合集

以下是一份Python基础代码示例合集,涵盖了常见的语法和操作,适合初学者快速掌握基本编程概念:1.基础语法python#打印输出print("Hello,World!")#变...

Python循环语句实用教程

一、循环基础1.while循环基本语法:while条件表达式:循环体代码while循环流程图:应用示例:#简单计数器count=0whilecount<5:...

在 Python 中如何向一个已排序的数组(列表) 中插入一个数呢

在Python中如何向一个已排序的数组(列表)中插入一个数呢?方法有很多种,关键在于原来数组是什么样的排序,用到啥排序方法效率高,就用哪种。我们来练习其中的几种插入方法,另外也掌握下遍历数组的...