一、字符串的连接
(1)以下这种方法效率比较低,一般刚开始学时有可能会犯这个错误:
s = ['a','b','c','d']
content = ' '
for i in a:
content = content + i #在循环连接字符串时,每连接一次,就要重新开辟空间
print content
每次连接成新字符串之后就要存放到新的空间,这样反复,内存操作频繁,每次都要计算内存空间,然后开辟内存空间,在释放内存空间,效率非常低。在操作数据量比较多的时候,这个方法就很不适用了。
以下两个方法比较优化一点:
(2)用字符串的join方法:
s = ['a','b','c','d']
content = ' '
content = ''.join(s) #引号之间可以添加连接符或不添加
print content
(3)用字符串的替换占位符替换:
a = ['a','b','c','d']
content = ' '
content = '%s%s%s%s' % tuple(a)
print content
二、字符串分割
s = 'a,b,c'
s1 = s.split(',') #s1=['a','b','c']
print(type(s1)) #<type 'list'>
也有splitlines()按行分割,相当于就是将split('\n')
还有.startswith(‘abc’)、.endswith(‘abc’)、.isalnum()是不是数字和字母、.isalpha()是不是字母、.isdigit()是不是数字、.isspace()是不是空串、.islower()是不是都是小写、.isupper()是不是都是大写、.istitle()是不是首字母大写等函数用于判断。
二、字符串替换
字符串的替换一般我们会用到下列两种方法。例子a = ‘hello world’,把字符串中的world换成python
(1)用字符串本身的replace方法实现
a.replace('world','python')
(2)用正则表达式来替换
import re
strinfo = re.compile('world')
b = strinfo.sub('python',a)
三、字符串截取
python字符串是有序集合,我们可以通过索引提取想要的字符,可以把python的字符串当做字符列表来理解
python的字符串列表有2种取值顺序:(1)从左至右索引默认从0开始,最大范围时字符串长度减1;(2)从右至左索引默认从-1开始,做大范围就是字符串开头
s = 'ILovePython'
s[0]的结果是I,s[-1]的结果是n
连续字符串的读取:s[1:5]的结果是Love,s[:-1]的结果是ILovePytho,s[:]的结果是ILovePython
四、字符串去空格、大小写、位置比较
字符串可以当做数组被访问,但是不能被修改,如下面经过去空格之后,s原字符串不会被修改
s = ‘ abc def ’
print(s.trip()) #去除前后空格 :abc def
print(s.lstrip()) #去除左边的空格:abc def__
print(s.rstrp()) #去除右边空格:___abc def
print(s) #s没有被修改
s = 'abcDEF'
print(s.upper()) #全部大写:ABCDEF
print(s.lower()) #全部小写:abcdef
print(s.capitalize()) #首字母大写:AbcDEF
在python3中字符串比较没有cmp函数,直接用大于小于等于(==,>,<)进行比较
s1 = ‘abcdefg’
s2 = ‘aaaaaaa’
print(s1.index(‘abc’))
try:
print(s2.index('abc'))
except ValueError:
pass
五、字符串格式化输出
(1)元组占位符
m = ‘python’
astr = ‘i love %s’ % m
print astr
(2)字符串的format方法
m = 'python'
astr = 'i love {python}'.format(python=m)
print astr
(3)字典格式化字符串
m = ‘python’
astr = ‘i love %(python)s’ % {'python:m'}
print astr
(1)引用
python一般内部赋值变量的话,都是传个引用变量,这和C语言的传址的概念差不多。举个例子:a=[1,2,3]表示变量a保存了这个列表的地址,可以使用id()来查看a的内存地址。将b = a,打印出来的内容和地址和a是一样的。这是因为变量a和变量b都是保存了同一个列表的地址,对a、b中的一个进行修改的话,另外一个同时也会跟着变化。
(2)拷贝
而如果我们使用拷贝的话,修改a或b,另外一个不会被修改。这是因为拷贝是另外开了一个地址。
a=[1,2,3]
b = a[ : ] #将a的内容拷贝给b
a[0]=0
a结果是[0,2,3],b的结果还是[1,2,3]
七、python单引号、双引号、三引号的区别
python的字符串可以用单引号括起来,也可以用双引号括起来,有了这两种表示方式,就可以不用转义字符了。比如a=“i love 'python'”和a="i love /'python/'"其实打印出来是一样的,但是第一种两种表示方式的嵌套引用可以不想第二个那样还要用转义。
而三引号的形式是用来输入多行文本的,也就是说在三引号之间输入的内容将被原样保留,字符串中间的单引号、双引号不用转义,不可见字符串如/n、/t等也都会被保留。比如:
a='''%(name)s is
a good boy,his age is %(age)s'''
b = a % {'name':'xiaoming','age':'20'}
print b的结果是:
xiaoming is
a good boy,his age is 20