按单词反转字符串是一道很常见的面试题。在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

['']

>>> re.split(r'(\w+)', s) # exactly split by word

['< ', 'Welcome', ' ', 'to', ' ', 'EF', '.', 'COM', '! >']

>>> re.split(r'(\s+|\w+)', s) # split by space and word

['']

>>> ''.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技术爱好者,目前从事测试开发相关工作,转载请注明原文出处。

欢迎关注我的博客 http://betacat.online,你可以到我的公众号中去当吃瓜群众。

字符串反转python 测试_Python中的反转字符串问题相关推荐

  1. python字符串find函数实现_python中实现查找字符串的find函数

    原博文 2018-06-19 19:26 − 第五题:自己实现一个字符串的find函数1.在一个字符串中查找另一个字符串2.找到了返回第一次出现的位置3.没找到返回-14.参数s1为源字符串,参数s2 ...

  2. python中字符串格式化的形式_Python中format函数字符串格式化入门

    格式化在程序开发中非常常见,大家肯定不陌生,Python中也存在多重格式化方式,format函数就是其中一种. 函数原型format(value[, format_spec]) 参数意义 value: ...

  3. python判断_Python中判断一个字符串是否以特定字符前缀开始的函数:startswith()

    Python中提供了大量的字符串处理函数,可以帮助我们完成各种各样的字符串处理工作. Python内置的startswith()函数可以帮助我们判断一个字符串中是否以某一特定的前缀字符串开始,并返回逻 ...

  4. python参数化_Python 中如何实现参数化测试的方法示例

    之前,我曾转过一个单元测试框架系列的文章,里面介绍了 unittest.nose/nose2 与 pytest 这三个最受人欢迎的 Python 测试框架. 本文想针对测试中一种很常见的测试场景,即参 ...

  5. python反转字符串递归怎么理解_Python使用递归反转字符串

    要递归地解决一个问题,找到一个容易解决的小问题,并通过将问题分解为其自身的越来越简单的版本来找出如何解决这个小问题. 你倒弦的第一件事是什么?第一件事是什么?你得到了字符串的最后一个字符,对吧? 所以 ...

  6. python 字符匹配_python 中如何匹配字符串

    python 中如何匹配字符串? 1. re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none.import re line="th ...

  7. python中字符串是对象吗_Python中关于字符串对象的一些基础知识

    Python的字符串被划分为不可变序列的类别,意味着这些字符串所包含的字符存在从左至右的位置顺序,并且它们不可以在本地进行修改. 基本操作 字符串可以通过+操作符进行合并,可以使用*运算符进行重复. ...

  8. python中格式化字符串的使用_Python中的格式化字符串

    Python中的格式化字符串方法: 在学习了一段时间的Python之后,回过头来看书的时候,发现Python中最简单的关于格式化输出字符串的方法也有多种,而这并不是类似于茴香豆的"茴&quo ...

  9. python比大小代码_Python中如何进行字符串比较大小?

    原标题:Python中如何进行字符串比较大小? 在Python中,我们会经常使用到字串符,用于编码码字.有的时候会需要比较字符串大小.本文主要介绍Python字符串比较大小方法:字符串的比较是比较AS ...

最新文章

  1. c语言结点初始化,C语言双向链表简单实现及图示(初始化/插入节点/删除节点)...
  2. mysql进程管理,MySQL管理
  3. 今日可抢回程火车票,实测两款GitHub开源抢票插件,所有坑我们都帮你踩过了...
  4. 使用jQuery for Asp.Net 我的开发环境配置
  5. 特征工程(3):特征选择—信息增益
  6. linux 采集cpu 内存,Linux环境获取(cpu、内存、网卡流量等)系统性能数据
  7. Oracle工具使用(export,import,sqlldr中文帮助及实例))
  8. 网站服务器中病毒该如何处理,网站被中了木马无法删除怎么办? 解决网站中病毒的办法...
  9. input 没显示 html,html - 为什么我的input type =“submit”没有显示?
  10. 2020年最新全国彩礼地图出炉,你那儿娶媳妇儿需要多少彩礼钱呢?数据分析来告诉你...
  11. linux 网络定时断链,客户端连接linux经常间隔性断开链接
  12. eclipse中要让一个 Java 源文件打开时编码格式为 UTF-8
  13. Java Servlet(十一):一个servlet被10个浏览器客户端访问时会创建几个servlet实例?...
  14. 举例说明计算机网络协议,第二章计算机网络协议与体系结构.ppt
  15. C语言视频教程(初学C语言,还是看视频更直观)
  16. 通过 PC 远程控制 Android 的应用 -- 可以将手机屏幕投射显示到电脑上
  17. 使用AST进行JavaScript反混淆(2022年增值税发票查验js)
  18. can't, cannot, can not
  19. 解决data too long for column 'name' at row2
  20. android沉浸式状态栏(像iOS一样的状态栏)

热门文章

  1. Chrome中使用showModalDialog无法接收返回值,解决方案
  2. java amount_java.time.Period.plus(TemporalAmount amountToAdd)方法
  3. sap脚本运行_如何使用Python脚本运行SAP?
  4. 在线mod计算机,计算机系中有关mod的常识(全).doc
  5. java 错误日期转正确日期_java – jdk8日期转换中的错误?
  6. 小米手机查看linux代码,如何识别小米设备-MIUI系统
  7. Python+OpenCV:理解K-Means聚类(K-Means Clustering)
  8. 基于Modbus TCP-IP协议的WEINVIEW HMI与PC通讯
  9. c语言指针交换字符串组,c语言 指针交换两个字符串
  10. java实现用户分组,根据用户指定的组分组数据