File "<stdin>;", line 1, in ?
TypeError: object doesn't support item assignment
>;>;>; word[] = 'Splat'
Traceback (most recent call last):
File "<stdin>;", line 1, in ?
TypeError: object doesn't support slice assignment
然而,可以通过简单有效的组合方式生成新的字符串:
>;>;>; 'x' + word[1:]
'xelpA'
>;>;>; 'Splat' + word[4]
'SplatA'
切片操作有一个很有用的不变性: s[] + s[i:] 等于s。
>;>;>; word[] + word[2:]
'HelpA'
>;>;>; word[] + word[3:]
'HelpA'
退化的切片索引被处理的很优美:过大的索引代替为字符串大小,下界比上界大的返回空字符串。
>;>;>; word[1]
'elpA'
>;>;>; word[10:]
''
>;>;>; word[2]
''
索引可以是负数,计数从右边开始,例如:
>;>;>; word[-1] # The last character
'A'
>;>;>; word[-2] # The last-but-one character
'p'
>;>;>; word[-2:] # The last two characters
'pA'
>;>;>; word[:-2] # All but the last two characters
'Hel'
不过-0还是0,所以它不是从右边计数的!
>;>;>; word[-0] # (since -0 equals 0)
'H'
越界的负切片索引会被截断,不过不要尝试在前元素索引(非切片的)中这样做:
>;>;>; word[-100:]
'HelpA'
>;>;>; word[-10] # error
Traceback (most recent call last):
File "<stdin>;", line 1, in ?
IndexError: string index out of range
理解切片的最好方式是把索引视为两个字符之间的点,第一个字符的左边是0,字符串中第n个字符的右边是索引n,例如:
+---+---+---+---+---+
| H | e | l | p | A |
+---+---+---+---+---+
0 1 2 3 4 5
-5 -4 -3 -2 -1
第一行是字符串中给定的0到5各个索引的位置,第二行是对应的负索引。从i到j的切片由这两个标志之间的字符组成。
对于非负索引,切片长度就是两索引的差。例如,word[1]的长度是2。
内置函数 len() 返回字符串长度:
>;>;>; s = 'supercalifragilisticexpialidocious'
>;>;>; len(s)
34
3.1.3 Unicode 字符串
从Python2.0开始,程序员们可以使用一种新的数据类型来存储文本数据:Unicode 对象。它可以用于存储多种Unicode数据(请参阅 http://www.unicode.org/ ),并且,通过必要时的自动转换,它可以与现有的字符串对象良好的结合。
上一页 1 2 3 4 5 6 7 8 910 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 下一页
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 指南 一个 可以 Python 模块 文件 方法 函数 对象 字符串 |
注册
个人空间
