1.字符串是一种直接量或者说是一种标量,字符串是不可变类型,简单来说改变一个字符串的元素就等需要新建一个新的字符串。当然,通过拼凑各个部分得到一个新的字符串也还是可以的
注意:python的字符串并不是以\0作为结束符的
>>> astring="Hello world"
>>> astring=astring[:6]+'python'
>>> astring
'Hello python'
2.Pyhton实际上有三类字符串,通常意义下的为字符串str和unicode字符串实际上是抽象类basestring的子类,这个basestring是不能是不能实例化的,如果妄图实例化,那么
>>> basestring('foo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: The basestring type cannot be instantiated
3.如果你想要删除字符串的一个元素,由于字符串是不可变的,所以你不能仅仅只是删除字符串中的某个元素,不过可以通过拼凑的方法来间接到达要求
>>> astring='Hello world'
>>> astring=astring[:3]+astring[4:]
>>> astring
'Helo world'
当然我么也可以通过赋一个空字符串或者使用del语句来清空或者删除一个字符串
4.字符串做对比的时候是按照ASCII码的值的大小来比较的
5.成员操作符(in ,not in)用来判断一个字符或者一个子串是否会出现在另一个字符串中
>>> astring="Hello world"
>>> "h" in astring
False
>>> "H" in astring
True
6.for 循环的else语句是一个可选项,它只在for循环完整的结束,没有遇到break时执行
这是没有遇到break,执行了后面的else语句
>>> for i in astring:
... print i,
... else:
... print "\nBingo"
...
H e l o w o r l d
Bingo
7.字符串对象的方法
>>> s.upper()
'HELLO PYTHON'
>>> s.lower()
'hello python'
>>> s.capitalize() #首字母大写
'Hello python'
>>> s.title() #单词首字母大写
'Hello Python'
8.格式化操作符(%)
%d 转换成有符号的十进制
%u 转换成无符号的十进制
%o 转换成无符号的八进制
%e 转换成科学计数法
%f 转换成浮点型
%c 转换成字符
**格式化操作符辅助指令
* 定义宽度或者小数点精度
m.n m显示的最小的总宽度,n是小数点后的位数 %m.nf
>>> f=2.4545
>>> print "%4.2f"%f
2.45
小技巧
对齐的文本和指定的宽度:
>>> '{:<30}'.format('left aligned') # <向左对其,总宽度为30
'left aligned '
>>> '{:>30}'.format('right aligned') # >向右对其,总宽度为30
' right aligned'
>>> '{:^30}'.format('centered') # ^在总宽度为30的范围内居中,
' centered '
>>> '{:*^30}'.format('centered')#^在总宽度为30的范围内居中,空白区域用*填充
'***********centered***********'
使用逗号作为千位分隔符
>>> '{:,}'.format(1234567890)
'1,234,567,890'
9.原始字符串的目的是为了对付哪些在字符串中出现的特殊字符,除了原始字符串符号(引号前面的字母r)以外,原始字符串根普通的字符串有着几乎完全相同的语法
>>> a=r"/asd/asd\n"
>>> print a
/asd/asd\n
>>> b="/asd/asd\n"
>>> print b
/asd/asd
>>>
10.chr(ascii码)与ord(string)函数
>>> ord('A')
65
>>> chr(65)
'A'
>>>
有chr(ascii码)与ord(string)函数,当然也有unichr(ascii码)与uniord(string)函数,用法都一样
11.常用的字符串类型的内建方法
string.endswith(obj,beg=0,end=len(string)) :字符串是否以obj结尾
类似的还有string.startswith(obj,beg=0,end=len(string))
>>> s="hello world"
>>> s.endswith('world')
True
>>> s.isalpha() #全是字母返回True
False
>>> s="he11o world"
>>> s.isalpha()
False
>>> s="helloworld"
>>> s.isalpha()
True
>>>
>>> s="he11oworld"
>>> s.isalnum() #字符串内至少有一个数字或字母返回True
True
>>> s="1231231"
>>>> s.isdigit() #只包含数字返回True 与s.isnumeric()
True
>>> s="Title"
>>> s.istitle() #是否标题化
True
>>> s=" title"
>>> s.lstrip() #截掉s的左边空格 当然还有s.rstrip()右边空格
'title'
>>> seq=['h','e','l']
>>> ''.join(seq) #将seq中所有元素合并为一个新的字符串
'hel'
>>>'-'.join(seq)
'h-e-l'
>>> s="hello world"
>>> s.count('l') #返回l出现的次数
3
>>> s="Hello Python"
>>> s.swapcase() #大小写反转
'hELLO pYTHON'
>>>
>>> s="Hello Python !!!"
>>> s.split(' ') #以空格作为分隔符切片成数组,很常用
['Hello', 'Python','!!!']
>>>
11.s虽然我们可以用单引号或者双引号来定义字符串,但是如果包含如换行符这样的特殊字符是,这个时候就应该使用三引号,经常用于HTML语句中
12.Unicode通过使用一个或者多个字节来表示一个字符的方法突破了ASCII的限制再这样的机制下,Unicode可以表示超过90000个字符
unicode()函数可以把任何python的数据类型转换成相应的Unicode字符串
s.encode(‘utf-8’)函数 参数接受编码格式,返回编码后的字符
s.decode(‘utf-8’)函数,参数接受解码格式,然后输出
遵循以下规则,处理unicode就比较简单
①。程序中出现字符串一定要加一个前缀u
②。不要用str()函数,用unicode()函数代替
③。不到必须的不要在你的程序中编解码unicode字符