我打开一个文件从readline开始的字符串从1开始在python中?
line = file.readline()
并使用line[0:2]
来选择该行中的第一3个字符。 但是,line[0:2]
只包含2个字符。 因此,我必须使用line[0:3]
来选择前3个字符,它的工作原理 但是为什么?
我检查的文件,没有空间在每行开头
任何人都知道这
我打开一个文件从readline开始的字符串从1开始在python中?
line = file.readline()
并使用line[0:2]
来选择该行中的第一3个字符。 但是,line[0:2]
只包含2个字符。 因此,我必须使用line[0:3]
来选择前3个字符,它的工作原理 但是为什么?
我检查的文件,没有空间在每行开头
任何人都知道这
因为你从片字符0之前字符2,即由字符0之前之前去在字符1之后。即,以字符0开始的前两个字符。
哦,我的英文!你的意思是“在字符0之前”,它是-1吗? – JJgogo 2012-02-28 00:59:32
否。它是字符0之前的一个点,但在前一个字符之后。 – 2012-02-28 01:04:15
第一个数字(0中的0为2)是包含的,第二个数字(0的2中的2)是排他的。
它像一个C++/C#的for循环:中
for (int n = i ; n < j ; n++)
{
...
}
代替
for (int n = i ; n <= j ; n++)
顺便说(但稍微offtopic):这是很好的做法是使用一个具有包容性开始约束和排他性最终界限。如果我和j是一样的,你不会遇到问题(即for循环没有执行)。如果您需要向后计数,则使用包含的结束界限和独占开始界限。
下面是Python's tutorial(读它,它的好!)说明:
一种方式来记住片的工作是怎么想的指数为字符之间的指点下,第一个字符的左边缘编号为0接着的n个字符的字符串的最后一个字符的右边缘具有索引n,例如:
+---+---+---+---+---+
| H | e | l | p | A |
+---+---+---+---+---+
0 1 2 3 4 5
-5 -4 -3 -2 -1
号码的第一行给出了索引为0的字符串中的位置... 5;第二行给出相应的负指数。从i到j的片段分别由标记为i和j的边缘之间的所有字符组成。
我明白了。那真是很好的解释!我会阅读该教程! – JJgogo 2012-02-28 01:02:46
在Python切片中,您指定了您想要的第一个项目,然后是第一个项目不需要想要的。
[good-primer-for-python-slice-notation](http://stackoverflow.com/questions/509211/good-primer-for-python-slice-notation) – RanRag 2012-02-28 00:53:30