搜索
首页后端开发Python教程Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决

    1.字符串的字符转换

    1.1.字符转换的概念

    在前面说的的字符串替换,是将字符串中的一个子串替换成了新的子串,如果我们想对字符串中的某些字符进行转换,也就是对字符串中的单个字符进行替换,可以调用方法maketrans和translate来实现。

    首先调用maketrans方法创建一个转换表,在转换表中声明要将那些字符转换成什么字符,然后将创建的转换表作为参数传给translate方法,实现字符的转换。

    maketrans方法创建转换表的语法:

    str.maketrans('转换的字符', '转换后的字符','删除的字符')

    maketrans方法可以传入三个参数:

    • 第一个参数用于指定被转换的字符,如果指定了多个字符,那么转换后的字符也需要指定多个,且数量都要相同,被转换的第一个字符会转换成第二个参数中的第一个字符,案例中会说明。

    • 第二个参数用于指定转换后的字符。

    • 第三个参数用于指定删除那些字符。

    定义好一个转换表之后,使用print可以打印这个转换表的内容,此时返回的是一个字典,字典中的每个key:value都是字符对应的ordinal value值。

    translate方法将转换表当做参数传入,再被定义的字符串调用,最终实现字符的转换。

    1.2.字符转换的应用案例

    1)转换表的创建

    定义转换表时,如果指定了多个被转换的字符,那么转换后的字符数量要与被转换的字符数量相同,此时第一个参数和第二个参数会交叉转换,代码如下。

    contable = str.maketrans('agx', '789')
    print(contable)
    
    '''
    代码解释:
        str.maketrans('agx', '789')定义了一个转换表,其中字符a转换成字符7,字符g转换成字符8,字符x转换成字符9
        当使用print函数打印定义的转换表时,返回的是一个字典,key是被转换的字符,value是转换后的字符,并且返回的是字符的ordinal value值
        返回结果:{97: 55, 103: 56, 120: 57}
            {97是字符a: 55是字符7, 103是字符g: 56是字符8, 120是字符x: 57是字符9}
    '''

    可以使用print函数打印转换表,返回结果是一个字典,在字典中的值是对应字符的ordinal value值,在字典中可以明确的看到什么字符会被转换成什么字符,如下图,97是字符a,55是字符7,97对应的字符会转换成55对应的字符。

    Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决

    除了直接以字符串的形式声明被转换字符和转换后字符的原始值外,还可以使用字典的方法声明转换与被转换的字符,因为转换表返回的结果就是一个字典,但是用的最普遍的方法还是直接在转换表中声明被转换的字符。

    #使用字典的形式,在字典中声明转换的字符、被转换字符的原始值
    contable = str.maketrans({'a': '7', 'g': '8', 'x': '9'})
    print(contable)
    '''
    	此时使用print打印转换表时,就会发现转换后的字符会以原始值的形式记录在字典中,被转换的字符还是以ordinal value值表示
    '''
    #输出结果:{97: '7', 103: '8', 120: '9'}
    
    #还是使用字典的行驶,在字典中声明被转换字符、转换字符的ordinal value值
    contable = str.maketrans({97: 55, 103: 56, 120: 57})
    print(contable)
    '''
    	这种方法需要实现使用ord函数获取被转换字符、转换字符的ordinal value值,然后在字典中直接声明字符的ordinal value值
    '''
    #输出结果:{97: 55, 103: 56, 120: 57}

    2)字符的转换

    #首先定义一个转换表,这个转换表可以被任意字符串调用使用
    contable = str.maketrans('agx', '789')
    
    #定义一个字符串
    mystr = 'jiangxluplader'
    
    #使用translate方法将转换表以参数的形式传入,然后由字符串调用这个方法实现字符的转换
    print(mystr.translate(contable))
    
    #输出结果:ji7n89lupl7der

    发现字符串中所有的a字符都被转换成了7,所有的g字符都被转换成了8,所有的x字符都被转换成了9。

    Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决

    3)maketrans方法定义转换表时 还可以指定要删除的字符,例如删除字符u、p

    contable = str.maketrans('agx', '789', 'up')
    mystr = 'jiangxluplader'
    print(mystr.translate(contable))
    
    '''
    	maketrans方法创建转换表时,第三个参数是指定删除的字符
    '''
    
    #输出结果:ji7n89ll7der

    Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决

    4)maketrans方法定义转换表中,还可以不对字符进行转换,只对某些字符进行删除,例如只删除字符u、p

    contable = str.maketrans('', '', 'up')
    mystr = 'jiangxluplader'
    print(mystr.translate(contable))
    
    #输出结果:jiangxllader

    Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决

    当指定第三个参数时,会将指定的字符删除,其实就是将指定的字符设置成了None对象。

    Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决

    2.字符串的劈分

    2.1.字符串劈分的概念

    所谓的字符串劈分指的是,根据指定的分隔符,将字符串一分为N个,例如字符串“aaa bbb”,默认的分隔符是空格,根据分隔符可以将这个字符串分为“aaa”,“bbb”,这就是字符串的劈分。字符串的劈分共有两种方法:

    1)调用方法split或者rsplit劈分字符串

    • split方法是从字符串的左侧开始劈分字符串,从前往后开始劈分。

    • rsplit方法是从字符串的右侧开始劈分字符串,从后往前开始劈分。

    split和rsplit方法会根据分隔符对字符串中所有出现分隔符的地方进行劈分。

    默认的分隔符是空格字符串,这两个方法如果不指定最大的劈分次数,输出的内容没有任何区别,并且这两个方法的返回值都是一个列表。

    当字符串中没有指定的分隔符时,这两个方法都会返回字符串本身,但是也会将字符串本身放在列表中。

    2)调用方法partition或者rpartition劈分字符串

    partition和rpartition这两个方法在调用的时候必须指定分隔符,然后对字符串进行劈分,这两个方法对字符串劈分后会返回一个元组。

    • partition方法是左劈分,从左往右找到分隔符第一次出现的位置,然后开始劈分字符串,始终劈分成三个元素,第一个元素是分隔符左侧的部分,第二个元素是分隔符,第三个元素是分隔符后面的部分。

    • rpartition方法是右劈分,从右往左找到分隔符第一次出现的位置,或者从左往右找到分隔符最后一次出现的位置,然后开始劈分字符串,始终劈分成三个元素,第一个元素是分隔符左侧的部分,第二个元素是分隔符,第三个元素是分隔符后面的部分。

    partition方法和rpartition只会将字符串中第一次出现分隔符的位置,进行劈分,一分为三,这就是与split方法的最大区别

    partition方法和rpartition两个方法只是开始劈分的位置处不同,然后将字符串劈分为三个元素:

    • 分隔符前面的部分

    • 分隔符

    • 分隔符后面的部分

    如果字符串中不存在指定的分隔符,两个方法都会返回字符串本身,partition方法劈分的三个元素顺序依次为:字符串本身、空字符串、空字符串,rpartition方法劈分的三个元素依次为:空字符串、空字符串、字符串本身。

    2.2.调用方法split或者rsplit劈分字符串

    1)基本的劈分案例

    #原始字符串
    mystr = "DevOps Jenkins Kubernetes"
    
    #左劈分
    print(mystr.split())
    
    #右劈分
    print(mystr.rsplit())
    
    '''
    	左劈分是从DevOps第一个空格字符串处开始劈分,右劈分是从Kubernetes最后一个空格字符串处开始劈分
    	默认的劈分字符串是空格字符串,只要遇到空格字符串,就将空格字符串左侧的字符串劈分出来。
    '''

    可以看到split和rsplit两个方法对字符串劈分后,并没有明显的区别。

    Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决

    2)通过参数sep指定分隔符劈分字符串

    在split和rsplit方法中都可以使用sep参数指定分隔符,从而根据指定的分隔符去劈分字符串。

    mystr = "DevOps|Jenkins|Kubernetes"
    print(mystr.split(sep='|'))
    print(mystr.rsplit(sep='|'))
    
    '''
    	split(sep='|')、rsplit(sep='|')指定分隔符为“|”
    '''

    可以看到split和rsplit两个方法对字符串劈分后,并没有明显的区别。

    Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决

    当指定的分隔符字符串不存在时,则会返回字符串本身,但是也会将字符串本身放在列表中。

    mystr = "DevOps Jenkins Kubernetes"
    print(mystr.split(sep='|'))
    print(mystr.rsplit(sep='|'))

    Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决

    3)通过参数maxsplit指定劈分字符串的最大劈分次数

    在split和rsplit方法中都可以使用maxsplit参数指定劈分字符串的最大劈分次数,什么意思呢?原本一个字符串可以被劈分6次,但是我们只需要劈分2次就行,就可以使用maxsplit参数指定指定劈分字符串的最大劈分次数。

    当指定了最大的劈分次数时,当超过最大的劈分次数后,剩余的子串会单独作为一部分输出,此时split和rsplit两个劈分方法就会有明显的区别。

    #定义原始字符串
    mystr = "DevOps|Jenkins|Kubernetes|Python|Gitlab"
    
    '''
    	使用split方法是从左往右开始劈分,从第一个子串位置处开始劈分,分隔符为"|",劈分次数为2,本身这个字符串可以被劈分5次,我们只劈分2次,那么DevOps、Jenkins会被劈分出来作为列表的单独元素,而剩余的子串Kubernetes|Python|Gitlab会被作为一部分放在列表的一个元素内
    '''
    print(mystr.split(sep='|', maxsplit=2))
    #输出结果:['DevOps', 'Jenkins', 'Kubernetes|Python|Gitlab']
    
    '''
    	使用rsplit方法是从右往左开始劈分,从最后一个子串处开始劈分,分隔符为"|",劈分次数为2,本身这个字符串可以被劈分5次,我们只劈分2次,那么Gitlab、Python这两个字符串会被劈分出来作为列表的单独元素,而剩余的字符DevOps|Jenkins|Kubernetes会被作为一部分,放在列表的一个元素内
    '''
    print(mystr.rsplit(sep='|', maxsplit=2))
    #输出结果:['DevOps|Jenkins|Kubernetes', 'Python', 'Gitlab']

    当在劈分方法内指定了最大的劈分次数的参数时,split左劈分和rsplit右劈分就会有明显的区别,split方法是从前往后根据分隔符进行劈分,rsplit方法是从后往前根据分隔符进行劈分。

    Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决

    2.3.调用方法partition或者rpartition劈分字符串

    partition方法是左劈分,从左往右找到分隔符第一次出现的位置,然后开始劈分字符串,始终劈分成三个元素,第一个元素是分隔符左侧的部分,第二个元素是分隔符,第三个元素是分隔符后面的部分。

    rpartition方法是右劈分,从右往左找到分隔符第一次出现的位置,或者从左往右找到分隔符最后一次出现的位置,然后开始劈分字符串,始终劈分成三个元素,第一个元素是分隔符左侧的部分,第二个元素是分隔符,第三个元素是分隔符后面的部分。

    这两个方法,只会根据一个分隔符进行劈分字符串,且始终劈分成三个元素,partition方法的分隔符取决于在字符串中第一次出现的分隔符,rpartition方法的分隔符取决于字符串中最后一次出现的分隔符。

    1)调用方法partition劈分字符串

    mystr = "DevOps|Jenkins|Kubernetes|Python|Gitlab"
    print(mystr.partition('|'))
    
    '''
    	partition从左往右找到第一次出现分隔字符串的位置,从这里开始劈分字符串,分隔符左侧的部分(DevOps)为第一个元素,分隔符(|)为第二个元素,分隔符右侧的部分(Jenkins|Kubernetes|Python|Gitlab)为第三个元素。
    '''
    
    #输出结果:('DevOps', '|', 'Jenkins|Kubernetes|Python|Gitlab')

    Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决

    2)调用方法rpartition劈分字符串

    mystr = "DevOps|Jenkins|Kubernetes|Python|Gitlab"
    print(mystr.rpartition('|'))
    
    '''
    	rpartition从左往右找到最后一次出现分隔字符串的位置,分隔符左侧的部分(DevOps)为第一个元素,分隔符(|)为第二个元素,分隔符右侧的部分(Jenkins|Kubernetes|Python|Gitlab)为第三个元素。
    '''
    
    #输出结果:('DevOps|Jenkins|Kubernetes|Python', '|', 'Gitlab')

    确实和理论说明的一样,从左往右找到最后一次分隔符出现的位置,分隔符左侧的部分为元组中的第一个元素,分隔符为第二个元素,分隔符右侧的部分为元组中的第三个元素。

    Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决

    3)当字符串中只有一个分隔符字符串且分隔符后没有任何字符时

    当字符串中只有一个分隔符字符串时,且分隔符后面没有任何字符串,此时无论是partition方法还是rpartition方法,劈分的字符串第三个元素一定为空。

    mystr = "DevOps|"
    print(mystr.partition('|'))
    print(mystr.rpartition('|'))

    第三个元素取的都是分隔符后面的部分,分隔符后面的部分什么也没有,因此就会输出空字符串。

    Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决

    4)当字符串中不存在指定的分隔符字符串(partition方法)

    如果字符串中不存在指定的分隔符,partition方法劈分的三个元素顺序依次为:字符串本身、空字符串、空字符串。

    mystr = "DevOps|Jenkins|Kubernetes|Python|Gitlab"
    print(mystr.partition('*'))
    
    #输出结果:('DevOps|Jenkins|Kubernetes|Python|Gitlab', '', '')

    第一个元素是字符串的本身,第二个元素是空字符串,第三个元素也是空字符串。

    Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决

    4)当字符串中不存在指定的分隔符字符串(rpartition方法)

    如果字符串中不存在指定的分隔符,rpartition方法劈分的三个元素顺序依次为:空字符串、空字符串、字符串本身。

    mystr = "DevOps|Jenkins|Kubernetes|Python|Gitlab"
    print(mystr.rpartition('*'))

    第一个元素是空字符串,第二个元素是空字符串,第三个元素是字符串的本身。

    Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决

    3.字符串的合并

    可以调用方法join将多个字符串合并成一个字符串。语法格式如下:

    '字符串的间隔符'.join(列表|数组)
    
    字符串的间隔符可以指定,也可以不指定,指定后,每个元素字符串在合并时都会在后面添加一个分隔符。

    1)使用join方法将列表中多个字符串进行合并

    使用join方法可以将列表中的多个元素,元素也都是字符串,将这些字符串进行合并。

    print(''.join(["Python", "Go", "K8S"]))
    
    #输出结果:PythonGoK8S

    使用join方法将列表中的每个元素合并时添加一个分隔符“|”

    print('|'.join(["Python", "Go", "K8S"]))
    
    #输出结果:Python|Go|K8S

    2)使用join方法将元组中的多个字符串进行合并

    join方法也可以将元组中的元素合并。

    print('|'.join(("Python", "Go", "K8S")))
    
    #输出结果:Python|Go|K8S

    3)可以把字符串看成是字符的列表,然后使用join方法将这些字符合并成字符串

    可以把字符串看成是字符的列表,然后使用join将这些字符加上分隔符合并成新的字符串。

    print('|'.join("Python"))
    
    #输出结果:P|y|t|h|o|n

    Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决

    以上是Python字符串的字符转换、字符串劈分、字符串合并问题怎么解决的详细内容。更多信息请关注PHP中文网其他相关文章!

    声明
    本文转载于:亿速云。如有侵权,请联系admin@php.cn删除
    Python:游戏,Guis等Python:游戏,Guis等Apr 13, 2025 am 12:14 AM

    Python在游戏和GUI开发中表现出色。1)游戏开发使用Pygame,提供绘图、音频等功能,适合创建2D游戏。2)GUI开发可选择Tkinter或PyQt,Tkinter简单易用,PyQt功能丰富,适合专业开发。

    Python vs.C:申请和用例Python vs.C:申请和用例Apr 12, 2025 am 12:01 AM

    Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。 Python以简洁和强大的生态系统着称,C 则以高性能和底层控制能力闻名。

    2小时的Python计划:一种现实的方法2小时的Python计划:一种现实的方法Apr 11, 2025 am 12:04 AM

    2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

    Python:探索其主要应用程序Python:探索其主要应用程序Apr 10, 2025 am 09:41 AM

    Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

    您可以在2小时内学到多少python?您可以在2小时内学到多少python?Apr 09, 2025 pm 04:33 PM

    两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

    如何在10小时内通过项目和问题驱动的方式教计算机小白编程基础?如何在10小时内通过项目和问题驱动的方式教计算机小白编程基础?Apr 02, 2025 am 07:18 AM

    如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

    如何在使用 Fiddler Everywhere 进行中间人读取时避免被浏览器检测到?如何在使用 Fiddler Everywhere 进行中间人读取时避免被浏览器检测到?Apr 02, 2025 am 07:15 AM

    使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

    Python 3.6加载Pickle文件报错"__builtin__"模块未找到怎么办?Python 3.6加载Pickle文件报错"__builtin__"模块未找到怎么办?Apr 02, 2025 am 07:12 AM

    Python3.6环境下加载Pickle文件报错:ModuleNotFoundError:Nomodulenamed...

    See all articles

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    AI Hentai Generator

    AI Hentai Generator

    免费生成ai无尽的。

    热门文章

    R.E.P.O.能量晶体解释及其做什么(黄色晶体)
    3 周前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.最佳图形设置
    3 周前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.如果您听不到任何人,如何修复音频
    3 周前By尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25:如何解锁Myrise中的所有内容
    4 周前By尊渡假赌尊渡假赌尊渡假赌

    热工具

    适用于 Eclipse 的 SAP NetWeaver 服务器适配器

    适用于 Eclipse 的 SAP NetWeaver 服务器适配器

    将Eclipse与SAP NetWeaver应用服务器集成。

    禅工作室 13.0.1

    禅工作室 13.0.1

    功能强大的PHP集成开发环境

    SecLists

    SecLists

    SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

    Dreamweaver CS6

    Dreamweaver CS6

    视觉化网页开发工具

    螳螂BT

    螳螂BT

    Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。