标签:
字符串
python 的字符串被划归为不可变序列这一类别,意味着这些字符串所包含的字符存在从左至右的位置顺序,并且他们不可以在原处修改.
字符串常量
单引号 ‘spam‘
双引号 "spam"
三引号 ‘‘‘...spam...‘‘‘ ""...spam...""
转义字符 "s\tp\na\om"
Raw字符串:r"c:\new\test.spam"
单双引号字符串是一样的
在python字符串中,单引号和双引号字符使可以互换的.
用转义序列代表特殊字符
\\ 反斜杠(\)
\‘ 单引号(‘)
\" 双引号(")
\a 响铃
\b 倒退
\f 换页
\n 换行
\r 返回
\t 水平制表符
\v 垂直制表符
\N{id} unicode数据库ID
\uhhhh unicode 16为十六进制数
\Uhhhh unicode 32位十六禁止数
\xhh 十六进制
\ooo 八进制
\0 Null
\other 不转义
raw 字符串抑制转义
例如:myfile = open(‘c:\new\test.dat‘,‘w‘)
这里的\t会被制表符所代替,导致错误
这正式使用raw字符串所要解决的问题,如果字母r出现在字符串的第一个引号的前面,它将会关闭转义机制,这个结果就是python会将反斜杠作为常量来保持,因此为了避免
这种文件名的错误,记得在字符串前面增加r
myfile = open(r‘c\new\test.dat‘,‘w‘)
还有一种办法,因为两个反斜杠是一个反斜杠的转义序列,可以如下
myfile = open(‘c:\\new\\test.dat‘,‘w‘)
实际应用中的字符串
基本操作:
python
>>>len("abc")
3
>>>‘abc‘+‘def‘ 字符串合并
‘abcdef‘
>>>‘ni!‘*4 字符串重复
‘ni!ni!ni!ni!‘
>>>myjob = "hacker"
>>>for c in myjob:
print(c,end=‘‘);
h a c k e r
>>>‘k‘ in myjob
true
>>>‘z‘ in myjob
false
>>>‘spam‘ in ‘abcdspamdef‘
true
字符串的索引和分片
索引:s[i] 获取特定偏移的元素
--- 第一个元素的偏移为0
--- 负偏移索引意味着从最后或者右边反向开始计数
---s[0] 获取了第一个元素
---s[-2] 获取了倒数第二个元素
分片:s[i:j] 提取对应的部分作为一个序列
---上边界并不包含在内
---分片的边界默认为0和序列的长度,如果没有给出的话,
---s[1:3]获取了从偏移为1的元素,知道但不包括偏移为3的元素
---s[1:] 获取了从偏移为1知道末尾之间的元素
---s[:3]获取了从偏移为0知道但是不包括偏移为3之间的元素
---s[:-1]获取了从偏移为0知道但是不包括最后一个元素之间的元素
---s[:]获取了从偏移0到末尾之间的元素
扩展分片:第三个限制值 步长
s[i:j:k] 从i到j 每隔k个元素取一次
>>>s = "abcdefghmm"
>>>s[1:10:2]
‘acegm‘
>>>s[::2]
‘acegm‘
也可以使用负数作为步长
>>>s = "hello"
>>>s[::-1]
‘olleh‘
通过一个负数步长,,两个边界的意义实际上进行了翻转
分片s[5:1:-1] 的翻转顺序获取从2到5的元素
>>>s = "abcdefg"
>>>s[5:1:-1]
‘fdec‘
字符串转换工具
在python中不能够让数字和字符串相加,即使字符串看起来像是数字也不可以,
>>>‘42‘+1
出错
int函数可以讲字符串转换成数字,
str函数可以将数字转换成字符串
float 函数可以讲字符串转换成数字
字符串代码转换
同样是转换,单个字符可以通过将其传给内置的ord函数转换其对应的ascll码,这个函数实际上返回的是这个字符在内存中对应的字符的二进制.chr函数会执行相反的操作,获取ascll码将其转换成对应的字符
>>> ord(‘s‘)
115
>>>chr(115)
‘s‘
int(‘1101‘,2)
13
bin(13)
‘0b1101‘
修改字符串
//合并
s = s+‘spam‘
>>>s
‘spamspam!‘
>>>s = s[:4]+‘burger‘+s[-1]
>>>s
‘spamburger!‘
//替换
>>>s = ‘splot‘
>>>s = s.replace(‘pl‘,‘pamal‘,1) 这里的1表示只替换一次
>>>s
‘spamalot‘
//格式化
>>>‘that is %d %s bird!‘% (1,‘dead‘)
that is 1 dead bird
>>>‘that is {0} {1} bird!‘.format(1,‘dead‘)
that is 1 dead bird
//寻找
>>>s = "abcedef"
>>>where = s.find(‘ce‘)
>>>where
3
//list
>>>s = [‘spam‘]
>>>l = list(s)
>>>l
[‘s‘,‘p‘,‘a‘,‘m‘]
//讲一个list变为字符串
>>>s = ‘‘.join(l)
>>>s
‘spam‘
//拼多个字符串
>>>‘spam‘.join([‘eggs‘,‘sausage‘,‘ham‘])
‘eggsspamsausagespamhamspam‘
字符串的文本解析
>>>line = ‘aaa bbb ccc‘
>>>cols = line.split()
>>>cols
[‘aaa‘,‘bbb‘,‘ccc‘]
>>>line = ‘bob,hacker,40‘
>>>line = line.split(‘,‘)
[‘bob‘,‘hacker‘,‘40‘]
>>>line = ‘iamspamaspamnumber‘
>>>line = line.split(‘spam‘)
>>>line
[‘iam‘,‘a‘,‘number‘]
标签:
原文地址:http://www.cnblogs.com/techdreaming/p/5080885.html