当前位置:首页 > 编程教程 > Python技术文章 > 简单谈谈Python中的反转字符串问题

简述Python反转字符串的方法

  • 发布时间:
  • 作者:码农之家
  • 点击:118

这篇文章主要知识点是关于python、字符串反转、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Python网络编程基础
  • 类型:Python基础大小:26 MB格式:PDF作者:海特兰德
立即下载

Tags:Python 字符串反转 

简单谈谈Python中的反转字符串问题

按单词反转字符串是一道很常见的面试题。在Python中实现起来非常简单。

def reverse_string_by_word(s):
 lst = s.split() # split by blank space by default
 return ' '.join(lst[::-1])

s = 'Power of Love'
print reverse_string_by_word(s)
# Love of Power

s = 'Hello World!'
print reverse_string_by_word(s)
# World! Hello

上面的实现其实已经能满足大多数情况,但是并不完美。比如第二个字符串中的感叹号并没有被翻转,而且原字符串中的空格数量也没有保留。(在上面的例子里其实Hello和World之间不止一个空格)

我们期望的结果应该是这样子的。

print reverse_string_by_word(s)
# Expected: !World Hello

要改进上面的方案还不把问题复杂化,推荐使用re模块。你可以查阅re.split() 的官方文档。我们看一下具体例子。

>>> import re
>>> s = 'Hello World!'

>>> re.split(r'\s+', s) # will discard blank spaces
['Hello', 'World!']

>>> re.split(r'(\s+)', s) # will keep spaces as a group
['Hello', ' ', 'World!']

>>> s = '< Welcome to EF.COM! >'

>>> re.split(r'\s+', s) # split by spaces
['<', 'Welcome', 'to', 'EF.COM!', '>']

>>> re.split(r'(\w+)', s) # exactly split by word
['< ', 'Welcome', ' ', 'to', ' ', 'EF', '.', 'COM', '! >']

>>> re.split(r'(\s+|\w+)', s) # split by space and word
['<', ' ', '', 'Welcome', '', ' ', '', 'to', '', ' ', '', 'EF', '.', 'COM', '!', ' ', '>']

>>> ''.join(re.split(r'(\s+|\w+)', s)[::-1])
'> !COM.EF to Welcome <'

>>> ''.join(re.split(r'(\s+)', s)[::-1])
'> EF.COM! to Welcome <'

>>> ''.join(re.split(r'(\w+)', s)[::-1])
'! >COM.EF to Welcome< '

如果你觉得用切片将序列倒序可读性不高,那么其实也可以这样写。

>>> ''.join(reversed(re.split(r'(\s+|\w+)', s)))
'> !COM.EF to Welcome <'

一句话搞定,so easy!

Python翻转字符串(reverse string), 一共包含5种方法, 其中第一种最简单, 即步长为-1, 输出字符串;

方法如下

5种方法的比较:

1. 简单的步长为-1, 即字符串的翻转(常用);
2. 交换前后字母的位置;
3. 递归的方式, 每次输出一个字符;
4. 双端队列, 使用extendleft()函数;
5. 使用for循环, 从左至右输出;

代码:

# -*- coding: utf-8 -*- 
 
#eclipse pydev, python 3.3 
#by C.L.Wang 
#time: 2014. 4. 11 
 
string = 'abcdef' 
 
def string_reverse1(string): 
 return string[::-1] 
 
def string_reverse2(string): 
 t = list(string) 
 l = len(t) 
 for i,j in zip(range(l-1, 0, -1), range(l//2)): 
  t[i], t[j] = t[j], t[i] 
 return "".join(t) 
 
def string_reverse3(string): 
 if len(string) <= 1: 
  return string 
 return string_reverse3(string[1:]) + string[0] 
 
from collections import deque 
def string_reverse4(string): 
 d = deque() 
 d.extendleft(string) 
 return ''.join(d) 
 
def string_reverse5(string): 
 #return ''.join(string[len(string) - i] for i in range(1, len(string)+1)) 
 return ''.join(string[i] for i in range(len(string)-1, -1, -1)) 
 
print(string_reverse1(string)) 
print(string_reverse2(string)) 
print(string_reverse3(string)) 
print(string_reverse4(string)) 
print(string_reverse5(string)) 

输出:

fedcba 
fedcba 
fedcba 
fedcba 
fedcba 

 

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

Python 相关电子书
学习笔记
网友NO.154314

python字符串反转

str类型python并没有reverse函数。 然而,通过反向步进切片,我们可以高效地反转一串字符串。 仅支持英文字符。 例: 1 a = ' example ' 2 b = a[::-1 ] 3 print (b) 4 # 输出结果'elpmaxe' 以上就是python字符串反转的详细内容,更多请关注码农之家其它相关文章! ……

网友NO.518496

实现Python字符串反转的4种方法

本文实例讲述了Python实现字符串反转的常用方法。分享给大家供大家参考,具体如下: 下面是实现python字符串反转的四种方法: 1. 切片 def rev(s):return s[::-1] 这是采用切片的方法,设置步长为-1,也就是反过来排序。 这种方法是最简洁的,也是最推荐的。 2. 这种方法与切片类似,不过比较麻烦 def rev(s):str0 = l = len(s)-1 while l = 0: str0 += s[l] l -= 1 return str0 这种方法是先设置一个str0的空变量,然后在s中从后往前取值,然后追加到str0中。 3. 列表 def rev(s):a = list(s) a.reverse() return .join(a) 这种方法是采用列表的reverse方法,先将s转换为列表,然后通过reverse方法反转,然后在通过join连接为字符串。 注意: 这里注意区分列表的reverse和sort(或sorted)方法: reverse 是把列表方向排序; sort(reverse=True) 是按照某种顺序方向排序。 example: a=[a,c,b,d] b=[a,c,b,d] a.sort(reverse=True) ……

网友NO.913620

详解Golang 与python中的字符串反转

详解Golang 与python中的字符串反转 在go中,需要用rune来处理,因为涉及到中文或者一些字符ASCII编码大于255的。 func main() { fmt.Println(reverse("Golang python"))}func reverse(src string) string { dst := []rune(src) len := len(dst) var result []rune result = make([]rune, 0) for i := len - 1; i = 0; i-- { result = append(result, dst[i]) } return string(result)} 而在python中,有几种方法,一个是list的操作,一个是系统的自带的函数,还有一个采用上面的遍历的方法 #方法1--------------------------------------s = 'Golang python'print (s[::-1])#方法2--------------------------------------s = 'Golang python'l = list(s)l.reverse()print (''.join(l) )#方法3--------------------------------------s = 'Golang python'str=[]k=0for i in s: str.append(s[len(s)-1-k]) k=k+1print (''.join(str) )#方法4--------------------------------------s = 'Golang python'str=[]for i in s: str.insert(0,i)print (''.join(str) ) 以上就是关于……

<
1
>

电子书 编程教程 PC软件下载 安卓软件下载

Copyright 2018-2020 xz577.com 码农之家

本站所有电子书资源不再提供下载地址,只分享来路

免责声明:网站所有作品均由会员网上搜集共同更新,仅供读者预览及学习交流使用,下载后请24小时内删除

版权投诉 / 书籍推广 / 赞助:QQ:520161757