Python字符串逐字符或逐词反转方法

yipeiwu_com6年前Python基础

目的

  把字符串逐字符或逐词反转过来,这个蛮有意思的。

方法

  先看逐字符反转吧,第一种设置切片的步长为-1

复制代码 代码如下:

  revchars=astring[::-1]

In [65]: x='abcd'

In [66]: x[::-1]
Out[66]: 'dcba'

第二种做法是采用reversed(),注意它返回的是一个迭代器,可以用于循环或传递给其它的“累加器”,不是一个已完成的字符串。

复制代码 代码如下:

revchars=''.join(reversed(astring))

In [56]: y=reversed(x)

In [57]: y
Out[57]: <reversed object at 0x058302F0>

In [58]: ''.join(y)
Out[58]: 'dcba'


接着来看逐词反转。

第一种做法,创建一个列表,将列表反转,用join方法合并

复制代码 代码如下:

In [38]: s='Today is really a good day'

In [39]: rev=s.split()

In [40]: rev
Out[40]: ['Today', 'is', 'really', 'a', 'good', 'day']

In [41]: rev.reverse()

In [42]: rev
Out[42]: ['day', 'good', 'a', 'really', 'is', 'Today']

In [45]: ' '.join(rev)
Out[45]: 'day good a really is Today'

也有一行解决的代码:

复制代码 代码如下:

rev=' '.join(s.split()[::-1])

第二种做法,可以不改变原先的空格,采用正则式来做:

复制代码 代码如下:

In [46]: import re

In [47]: rev=re.split(r'(\s+)',s)

In [48]: rev
Out[48]: ['Today', ' ', 'is', ' ', 'really', ' ', 'a', ' ', 'good', ' ', 'day']

In [49]: rev.reverse()

In [50]: rev
Out[50]: ['day', ' ', 'good', ' ', 'a', ' ', 'really', ' ', 'is', ' ', 'Today']

In [51]: rev=''.join(rev)

In [52]: rev
Out[52]: 'day good a really is Today'


可以考虑采用reversed()来代替可读性较差的[::-1]

复制代码 代码如下:

revwords=' '.join(reversed(s.split()))

revwords=''.join(reversed(re.split(r'(\s+)',s)))

相关文章

Python批量转换文件编码格式

自己写的方法,适用于linux, #!/usr/bin/python #coding=utf-8 import sys import os, os.path import dirca...

python中list循环语句用法实例

本文实例讲述了python中list循环语句用法。分享给大家供大家参考。具体用法分析如下: Python 的强大特性之一就是其对 list 的解析,它提供一种紧凑的方法,可以通过对 li...

pytorch中的transforms模块实例详解

pytorch中的transforms模块中包含了很多种对图像数据进行变换的函数,这些都是在我们进行图像数据读入步骤中必不可少的,下面我们讲解几种最常用的函数,详细的内容还请参考pyto...

pandas表连接 索引上的合并方法

如下所示: left1 = pd.DataFrame({‘key':[‘a','b','a','a','b','c'],'value':range(6)}) right1 = pd...

Python实现随机选择元素功能

Python实现随机选择元素功能

如果要从序列中随机挑选元素,我们可以使用random模块的random.choice()方法: 如果想要取出N个元素,将选出的元素一处以做进一步的考察,可以使用random.sampl...