关闭

Python学习笔记 2 字符串的操作大全

标签: python
188人阅读 评论(0) 收藏 举报
分类:

2.1表示方法

字符串的表示一共有三种方法,即单引号,双引号,三引号。接下来我将简单的介绍一下具体的用法。
·单引号:‘Taoey’,个人还是比较喜欢的主要是因为懒的原因啦(不用按住shift)
·双引号:“Taoey”,基本和单引号没有啥区别
·三引号:"""Taoey""",主要用于大片的字符串,其中可以包含单引号和双引号

2.2字符串的相关操作

基本操作:长度,比较,拼接,截取,分割,替换,反转,编码,格式化,查找,复制,大小写等操作

2.2.1字符串的长度


通过内置方法len(str)实现,不用引入任何模块,返回一个整数值(空格也算一个长度哦)

>>>a='Taoey'
>>>print len(a)
5

2.2.2字符产串的比较


一个大神的字符串比较的博客
cmp方法比较两个字符串对象。
cmp(x,y)如果 x小于y,返回值是负数
如果x大于y ,返回的值为正数
x等于y,返回0
但是在 Python3 中,cmp() 函数被移除了,所以我以后还是避免少用这个函数。

>>>a='Taoey'
>>>b='goTaoey'
>>>cmp(a,b)
-1

那么还有没有比较字符串的方法呢?
答案是当然有了。
·python is 主要是判断 2 个变量是否引用的是同一个对象,如果是的话,则返回 true,否则返回 false。
尽量不要用is比较两个数值(这个本人暂时还没有搞懂,希望博友指点)

>>>a='Taoey'
>>>b='goTaoey'
>>>c=a is b
>>>print c
False

2.2.3字符串的拼接


转载的参照博文
python字符串连接有几种方法,把大家可能用到的列出来,第一个方法效率是最低的,另外给大家介绍后面的 2种效率高的方法,希望对大家有帮助。

先介绍下效率比较低的,有些新手朋友就会犯这个错误:
a = [‘a’,’b’,’c’,’d’]

content = ”

for i in a:
content = content + i

print content
说下为什么效率会低呢?

原因:在循环连接字符串的时候,他每次连接一次,就要重新开辟空间,然后把字符串连接起来,再放入新的空间,再一次循环,又要开辟新的空间,把字符串连接起来放入新的空间,如此反复,内存操作比较频繁,每次都要计算内存空间,然后开辟内存空间,再释放内存空间,效率非常低,你也许操作比较少的数据的时候看不出来,感觉影响不大,但是你碰到操作数据量比较多的时候,这个方法就要退休了。

还是看看下面2个比较先进的方法把。

方法1: 用字符串的join方法:


>>> a = ['a','b','c','d']
>>> content = ''#新建一个空字符串
>>> content = ''.join(a)
>>> print content
abcd

方法2: 用字符串的替换占位符替换

>>> a = ['a','b','c','d']
>>> content = ''
>>> content = '%s%s%s%s' % tuple(a)
>>> print content
abcd

备注:tuple()函数将列表转换为元组。(以后将介绍列表和元组)

>>> aList = [123, 'xyz', 'zara', 'abc']
>>> aTuple = tuple(aList)
>>> print "Tuple elements : ", aTuple
Tuple elements :  (123, 'xyz', 'zara', 'abc')

2.2.4字符串的截取


首先我先说明一下字符串的性质,字符串可以看做是一个字符的列表(在java,C++中叫数组),因为Python比较随意嘛,所以这个列表有两种检索方式(下面的介绍可以看做是单个字符的截取)

第一种是从左到右索引默认0开始的,最大范围是字符串长度少1

>>>a='TaoeyPython'
>>>print a[0]
T

第二种是从右到左索引默认-1开始的,最大范围是字符串开头

>>>a='TaoeyPython'
>>>print a[-1]
n

接下来就应该介绍字符串的截取功能了,即字符串的切片问题:

可以用变量[头下标:尾下标],截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
注意:和截取单个字符不同,在字符串切片问题中,数字代表的就是自身在字符串中的位置。还有一点,就是冒号两边的东东,只要是整数类型的数字就行(比如说其他函数返回的整数)

举一堆栗子(哈哈,应该够吃的啦吧):


>>> print a
TaoeyPython

>>>a='TaoeyPython'
>>>print a[:5]
Taoey

>>>> print a[0:]
TaoeyPython

>>>print a[:len(a)]
TaoeyPython

>>>print a[:len(a)-6]
Taoey

>>> print a[:-1]
TaoeyPytho

2.2.5 字符串的分割


推荐参考博文:python split和rsplit用法
字符串截取完了,接下来当然要介绍它的表兄:分割
实际上就是一个函数的事:可以用split(),rsplit()
split():从头部切
rsplit():从尾部切
括号里写要分割的界限和要切的次数,然后生成列表对象
列表中的值是这样的 list [切割完成的,切剩下的]
废话不多说,直接上例子:

>>>str = 'Python.py.Java.java.C++.cpp'
>>>content = str.split('.')#都切开
>>>print content

['Python', 'py', 'Java', 'java', 'C++', 'cpp']

>>> con=str.split('.',1)#切一刀(分成两段)
>>> print con
['Python', 'py.Java.java.C++.cpp']

>>> con=str.split('.',2)#切两刀(分成三段)
>>> print con
['Python', 'py', 'Java.java.C++.cpp']


>>> con=str.rsplit('.',2)
>>> print con
['Python.py.Java.java', 'C++', 'cpp']

应用:我们可以利用split('.',1)来判断文件类型

2.2.6字符串的替换

s.replace(old,new)#将old替换成new
s.expandtabs(n)#将中的每一个制表符替换成n个空格

其实可以用这个函数做一些有趣的事情哦,比如说向一个妹子表白之类的:
请在IDE中进行编程,比较方便:
(这是一个比较经典的程序格式,谨献给跟我一样的小白们,感觉和C++比较像)

#-*-encoding:utf-8-*-
def show_love(s):
    a=s.replace('a',' ')#将a替换成空格
    b=a.replace('m','o')#将m替换成o
    return b
def main():
    s='Ialmveaymu'
    a=raw_input('Do you know the mean of "%s " (Y/N)'%s)
    if a is 'Y':
        print 'hahaha'
    else:
        print 'Please replace a->空格  ,m->o,then:'
        print show_love(s)

main()
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:39330次
    • 积分:585
    • 等级:
    • 排名:千里之外
    • 原创:27篇
    • 转载:10篇
    • 译文:0篇
    • 评论:0条