玩转python之字符串逐个字符或逐词反转

众所周知,python中的字符串是无法改变的,反转一个字符串自然要创建一个拷贝;嘴简单的方法,当然是步长为“-1”的切片:

result = astring[::-1]

如果要是按单词来反转,需要三步完成:字符串--->单词列表、反转列表、单词列表--->字符串;

1 result = astring.split()
2 result.reverse()
3 result = ‘ ‘.join(result)

如果喜欢简练和紧凑的一行代码,可以这样做:result = ‘ ‘.join(astring.split()[::-1])

但是[::-1]降低了可读性,不过也可以这样写:result = ‘ ‘.join(reversed(astring.split()))

假设一下情形:在处理字符串的同时,保证不改变空格的个数,显然上述方法无法奏效,这就到了正则表达式出场的时候了:

1 import re
2 result = re.split(r‘(\s+)‘, astring)
3 result.reverse()
4 result = ‘‘.join(result)        #注意‘‘中间没有空格哦

同样一行也可以完成这个任务:result = ‘‘.join(re.split(r‘(\s+)‘, astring)[::-1])

总结:很遗憾,这篇文章起初的写法要比这样好,可由于意外丢失了未完成的初稿,倒是灵感全无,尽最大努力,写成了这样;

玩转python之字符串逐个字符或逐词反转

时间: 2024-10-05 23:46:32

玩转python之字符串逐个字符或逐词反转的相关文章

《Python CookBook2》 第一章 文本 - 去字符串两端的空格 && 合并字符串 && 将字符串逐字符或者逐词反转

去字符串两端的空格 任务: 获得一个开头和末尾都没有多余空格的字符串. 解决方案: 字符串对象的lstrip.rstrip和strip 方法正是为这种任务而设计的.这几个方法都不需要参数,它们会直接返回一个删除了开头.末尾或者两端的空格的原字符串的拷贝. 参考代码: >>> test_string = ' test ' >>> print '|',test_string.lstrip(),'|',test_string.rstrip(),'|',test_string.

python 判断字符串中字符类型的常用方法

s为字符串 s.isalnum() 所有字符都是数字或者字母 s.isalpha() 所有字符都是字母 s.isdigit() 所有字符都是数字 s.islower() 所有字符都是小写 s.isupper() 所有字符都是大写 s.istitle() 所有单词都是首字母大写,像标题 s.isspace() 所有字符都是空白字符. .. 判断是整数还是浮点数 a=123 b=123.123 >>>isinstance(a,int) True >>>isinstance(

python非字符串与字符产链连接

"hello" +' '+str(110) 输出结果: 'hello 110'

Python中字符串的有趣玩法

反转一个字符串 >>> S = 'abcdefghijklmnop' >>> S[::-1] 'ponmlkjihgfedcba' 这种用法叫做three-limit slices 除此之外,还可以使用slice对象,例如 >>> 'spam'[slice(None, None, -1)] >>> unicode码与字符(single-character strings)之间的转换 >>> ord('s') # or

玩转python之每次处理一个字符

在Python中字符就是长度为1的字符串,所以可以循环遍历一个字符串,依次访问每一个字符,得到你想要的处理前提: 一个列表是个好主意,就像这样:thelist = list(thestring) 当然,完全可以不用列表,对于喜欢循环遍历的人,他们有足够的理由这么做,因为并没有创建列表的过程: for c in thestring: do_something_with(c) 知道列表推导的人,肯定不屑于上面的写法,因为下面的代码是他们常引以为豪的: results = [do_something_

python 实现 全角字符 传转换成 半角字符串

Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. >>> def strQ2B(ustring): #把全角字符串转半角 ustring=ustring.decode("cp9

Python 正则表达式替换特定字符为标志的字符串

Requirement: [ { "code": "AF", "value": 53, "name": "Afghanistan" }, { "code": "AL", "value": 117, "name": "Albania" }, { "code": "DZ",

python的u'字符串"(字符编码):字符串前有u,表示字符串以unicode格式存储

举个例子 >>> s = u'\u6ce8\u91ca' >>> s u'\u6ce8\u91ca' >>> print s 注释 >>> print type(s) <type 'unicode'> >>> print s.encode('gbk') 注释 字符串前加u表示为unicode编码,而当前文本的unicode编码 可以设定, 比如utf-8编码就是第一行加上: # -*- coding: u

玩转python之测试一个对象是否是类字符串

提到类型测试,我首先想到python中“鸭子类型”的特点,所谓鸭子类型,即如果它走路像鸭子,叫声也像鸭子, 那么对于我们的应用而言,就可以认为它是鸭子了!这一切都是为了功能复用. 我们总是需要测试一个对象,尤其是当写一个函数或者方法时,经常需要测试传入的参数是否是一个字符串: 下面这个方法利用了内建的isinstance和basestring来简单快速检查某个对象是否是字符串或者Unicode对象: def is_string(anobj): return isinstance(anobj, b