关闭

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

标签: python
303人阅读 评论(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网站的观点或立场

《笨办法学python》笔记(完结)

打印: %r %r 与 %s 的区别就好比 repr() 函数处理对象与 str() 函数处理对象的差别。 %s => str(),比较智能 %r => repr(),处理较为简单和直接  from ...
  • u013055678
  • u013055678
  • 2016-11-02 22:20
  • 4578

《代码大全2》读书笔记

这本书的核心思想是: 管理软件项目的本质是管理复杂性。 代码承载的是人与人之间的交流。 第一部分 打好基础第2章 隐喻重要的研发成果常常产自类比(analogy)。通过把你不太理解的东西和一些你较为理...
  • gaopenghigh
  • gaopenghigh
  • 2015-12-13 19:09
  • 1453

linux学习笔记

grep -v ^# xxxx  查看不以#开头(非注释)的内容 查找语句:find,locate,which,whereis,grep 压缩命令:tar,gz,zip,br2 压缩:tar -...
  • sd2131512
  • sd2131512
  • 2014-11-03 21:19
  • 520

java对字符串操作大全

一.Java字符串类基本概念 在JAVA语言中,字符串数据实际上由String类所实现的。Java字符串类分为两类:一类是在程序中不会被改变长度的不变字符串;二类是在程序中会被改变长度的可变字符串。...
  • li_yangyang_li
  • li_yangyang_li
  • 2016-05-04 21:45
  • 1610

Python学习笔记(一)基础语法

Python标识符 在python里,标识符有字母、数字、下划线组成。 在python中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。 python中的标识符是区分大小写的...
  • aa294194253
  • aa294194253
  • 2015-02-15 10:02
  • 478

Linux学习笔记之——起始篇

摘要:学习笔记目录、方便以后回顾、没有什么捷径可走、不断的记录、总结、练习、coding、coding。
  • chenghuaying
  • chenghuaying
  • 2014-03-31 16:47
  • 4554

java 字符串操作大全2 split 详解

Java代码  String s2="this is a test"; String sarray[]=s2.split("/s"); System.out.println("sarra...
  • hjm4702192
  • hjm4702192
  • 2013-02-03 13:55
  • 1805

Vlan学习笔记终极整理

对于Vlan学习的理解和整理,已经修复了图片,欢迎补充
  • u011105350
  • u011105350
  • 2015-12-28 16:06
  • 412

python 2.x和3.x中的字符串区别

老问题了,自己的一些总结。
  • dizuo
  • dizuo
  • 2014-12-23 15:18
  • 2016

Python基础学习笔记之(一)

Python基础学习笔记之(一)zouxy09@qq.comhttp://blog.csdn.net/zouxy09        前段时间参加微软的windowsAzure云计算的一个小培训,其中P...
  • zouxy09
  • zouxy09
  • 2013-11-24 15:58
  • 29921
    个人资料
    • 访问:55288次
    • 积分:646
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:10篇
    • 译文:0篇
    • 评论:1条
    最新评论