Python内置的字符串处理函数整理

收集常用的Python
内置的各种字符串处理
函数的使用方法

str='python String function'

  1. 生成字符串变量str='python String function'
     
  2. 字符串长度获取:len(str)
    例:print '%s length=%d' % (str,len(str))
     
  3. 字母处理
    全部大写:str.upper()
    全部小写:str.lower()
    大小写互换:str.swapcase()
    首字母大写,其余小写:str.capitalize()
    首字母大写:str.title()
    print '%s lower=%s' % (str,str.lower())
    print '%s upper=%s' % (str,str.upper())
    print '%s swapcase=%s' % (str,str.swapcase())
    print '%s capitalize=%s' % (str,str.capitalize())
    print '%s title=%s' % (str,str.title())
  4. 格式化相关
    获取固定长度,右对齐,左边不够用空格补齐:str.ljust(width)
    获取固定长度,左对齐,右边不够用空格补齐:str.ljust(width)
    获取固定长度,中间对齐,两边不够用空格补齐:str.ljust(width)
    获取固定长度,右对齐,左边不足用0补齐
    print '%s ljust=%s' % (str,str.ljust(20))
    print '%s rjust=%s' % (str,str.rjust(20))
    print '%s center=%s' % (str,str.center(20))
    print '%s zfill=%s' % (str,str.zfill(20))

  5. 字符串搜索相关
    搜索指定字符串,没有返回-1:str.find('t')
    指定起始位置搜索:str.find('t',start)
    指定起始及结束位置搜索:str.find('t',start,end)
    从右边开始查找:str.rfind('t')
    搜索到多少个指定字符串:str.count('t')
    上面所有方法都可用index代替,不同的是使用index查找不到会抛异常,而find返回-1
    print '%s find nono=%d' % (str,str.find('nono'))
    print '%s find t=%d' % (str,str.find('t'))
    print '%s find t from %d=%d' % (str,1,str.find('t',1))
    print '%s find t from %d to %d=%d' % (str,1,2,str.find('t',1,2))
    #print '%s index nono ' % (str,str.index('nono',1,2))
    print '%s rfind t=%d' % (str,str.rfind('t'))
    print '%s count t=%d' % (str,str.count('t'))

  6. 字符串替换相关
    替换old为new:str.replace('old','new')
    替换指定次数的old为new:str.replace('old','new',maxReplaceTimes)
    print '%s replace t to *=%s' % (str,str.replace('t', '*'))
    print '%s replace t to *=%s' % (str,str.replace('t', '*',1))

  7. 字符串去空格及去指定字符
    去两边空格:str.strip()
    去左空格:str.lstrip()
    去右空格:str.rstrip()
    去两边字符串:str.strip('d'),相应的也有lstrip,rstrip
    str=' python String function '
    print '%s strip=%s' % (str,str.strip())
    str='python String function'
    print '%s strip=%s' % (str,str.strip('d'))

  8. 按指定字符分割字符串为数组:str.split(' ')
    默认按空格分隔
    str='a b c de'
    print '%s strip=%s' % (str,str.split())
    str='a-b-c-de'
    print '%s strip=%s' % (str,str.split('-'))

  9. 字符串判断相关
    是否以start开头:str.startswith('start')
    是否以end结尾:str.endswith('end')
    是否全为字母或数字:str.isalnum()
    是否全字母:str.isalpha()
    是否全数字:str.isdigit()
    是否全小写:str.islower()
    是否全大写:str.isupper()
    str='python String function'
    print '%s startwith t=%s' % (str,str.startswith('t'))
    print '%s endwith d=%s' % (str,str.endswith('d'))
    print '%s isalnum=%s' % (str,str.isalnum())
    str='pythonStringfunction'
    print '%s isalnum=%s' % (str,str.isalnum())
    print '%s isalpha=%s' % (str,str.isalpha())
    print '%s isupper=%s' % (str,str.isupper())
    print '%s islower=%s' % (str,str.islower())
    print '%s isdigit=%s' % (str,str.isdigit())
    str='3423'
    print '%s isdigit=%s' % (str,str.isdigit())

还有其他常见的Python字符串处理
函数的话不定期更新。

emlog的日志别名功能

emlog3.3的版本就给自己这个博客弄了日志别名(自定义URL)的功能,因为感觉这功能对seo很重要。后来更新到3.5.2也把这功能同步过去了。

emlog日志别名功能效果图1

emlog日志别名功能效果图2

看了下emlog的新版本4.0的新功能点,貌似也支持日志别名功能了,还有其他挺多的,目前没有升级的打算。昨天在官方博客那边说了下挺多人来问如何实现日志别名功能的,这里简单描述下。

弄emlog的日志别名功能先给数据库blog表添加一个字符串类型的字段url。借助的是Google的翻译接口,站里另外骗文章有这东东:js-使用google翻译接口API

关键代码下载:emlog开发日志别名自定义URL功能代码下载

另外还要配合.httaccess的解析或者通过index.php唯一入口对请求的url进行路由转换。

自从使用emlog以来,数数算算,自己添加的功能也多的。

最早的emlog标签球获取热门100条,根据叨叨的话添加随机标题后缀,日志自定义URL,自定义Page页面,热门日志功能,网站xml地图功能,网站标签库,面包屑,重新整理文章归档,日志相关文章推荐,文章关键字提取,评论列表的gravatar头像,评论发信通知博主,回复通知留言者,网站在线群聊等等。。

这些效果看图片:

emlog热门日志功能

emlog热门日志功能效果图

emlog网站xml地图功能

emlog网站日志功能效果图

emlog网站面包屑功能

emlog网站面包屑功能效果图

emlog文章归档

emlog文章归档效果图1

emlog归档效果图2

emlog日志相关推荐文章功能

emlog日子相关推荐功能效果图


emlog评论列表gravatar头像功能

emlog评论列表gravatar头像效果图

emlog在线群聊功能

emlog多人在线群聊功能

Python的内建比较函数cmp比较原理剖析

cmp( x, y):比较2个对象,前者小于后者返回-1,相等则返回0,大于后者返回1.

Python的cmp比较函数比较原理

Python的cmp函数可以比较同类型之间,或者不同数据类型之间。然后根据Python的cmp比较函数的返回值来判定比较大小。

>>> list1, list2 = [123, 'xyz'], [456, 'abc']
>>> cmp(list1, list2)
-1

>>> cmp(list2, list1)
1
>>> list3 = list2 + [789]
>>> list3
[456, 'abc', 789]

>>> cmp(list2, list3)
-1

观察上面cmp函数的几个比较,可以总结:

Python的cmp比较函数
,如果我们比较的是两个同类的对象,比较操作是非常直观的。

  • 数字和字符串的比较,直接比较它们的值。
     
  • 对于序列类型的比较,方式上有相似。Python在两个对象基本不能比较的时候尽量做出公平的结果。比如当两个对象没有关系时,或者两种类型根本就没有用于比较的函数时,这时 Python只能根据"逻辑"来做出结论。比较的算法逻辑:
    1.   对两个列表的元素进行比较.
    2.   如果比较的元素是同类型的,则比较其值,返回结果.
    3.   如果两个元素不是同一种类型,则检查它们是否是数字.
         a. 如果是数字,执行必要的数字强制类型转换,然后比较.
         b. 如果有一方的元素是数字,则另一方的元素"大"(数字是"最小的")
         c. 否则,通过类型名字的字母顺序进行比较.
    4.   如果有一个列表首先到达末尾,则另一个长一点的列表"大".
    5.   如果我们用尽了两个列表的元素而且所有元素都是相等的,那么结果就是个平局,就
    是说返回一个 0.

这就是Python的cmp函数比较原理
了。

Python通用序列类型数据的操作

Python的序列

Python有6种内建的序列,包括:列表、元组、字符串、Unicode字符串、buffer对象和xrange对象。其中最为常用的是Python的列表和元组。

Python序列的应用

Python在操作一组数据时,通常是用序列来表示这组信息。(序列也可以包含其他序列)

Python还有一种叫做容器的数据结构。容器是包含其他对象的任意对象。序列(如元组和列表)和映射(比如字典)就是两类主要的容器。

序列的每个元素有自己的编号(元组可以作为字典的键名),而映射的每个元素则有一个自己的名字(键)。另外还有种容器类型既不是序列也不是映射,叫做集合。

通用的序列操作

所有序列类型的数据结构都可以进行某些特定的操作,如;索引
分片


和检查每个元素是否属于序列的成员(成员资格
)。

索引

序列的所有元素都有自己的编号,从0开始,通过编号访问即为索引。

>>>indexing = 'python'
>>>indexing[1]
'y'
>>>indexing[-1]
'n'

或者字符串直接索引

>>>'python'[0]
'p'

分片

使用索引是用来访问单个元素,而使用分片操作是用来访问一定范围内的元素。分片是通过冒号相隔的两个索引来实现。

>>>sliceing = '<a href="//sjolzy.cn/">python</a>'
>>>sliceing[9:26]
'//sjolzy.cn/'
>>>num= [1,2,3,4,5,6]
>>>num[3:6]
[4, 5, 6]
>>>num[-3:-1]
[4, 5]
>>>num[-3:]
[4, 5, 6]
>>>num[:]
[1,2,3,4,5,6]

分片有个隐式的设置:步长。上面的步长都为1。

比如:

>>>num= [1,2,3,4,5,6]
>>>num[3:6:1] #这边是个隐藏的步长1
[4, 5, 6]
>>>num[3:6:2] #步长改为2
[4, 6]

序列相加

通过加号来进行序列的连接操作。

>>>[1,2]+[3,4]
[1,2,3,4]
>>>[1,2]+'python'
TypeError: can only concatenate list (not "str") to list
#报错了,相同类型的序列才能进行连接操作。

乘法

用数字x乘以一个序列得到新的序列,新的序列为原来的序列重复x次。

>>>[1] * 3
[1, 1, 1]

成员资格 (检测元素是否属于序列的成员)

要检查一个值是否在序列中,可以使用in运算符。返回的是布尔值。

>>>per = 'python'
>>>'py' in per
True

注:in是区分大小写的。

php - 字符串内容为数组如何进行格式转换为数组

一个简单的应用。。

例,

$str    =    "array( 'USD'=>'1', 'GBP'=>'0.6494', 'EUR'=>'0.7668' ,'JPY'=>'82.8150','RMB'=>'6.6480' )";

现有$str,内容为数组形式的数据。

想要得到真正的数组

$arr    = array( 'USD'=>'1', 'GBP'=>'0.6494', 'EUR'=>'0.7668' ,'JPY'=>'82.8150','RMB'=>'6.6480' );

处理办法是:

eval("\$arr = ".$str.'; ');

这样就得到数组$arr为字符串$str的数据的数组形式

跟js使用eval类似。。

标签: php, 数组, 字符串