2012-02-28 93 views
2

我打開一個文件從readline開始的字符串從1開始在python中?

line = file.readline() 並使用line[0:2]來選擇該行中的第一3個字符。 但是,line[0:2]只包含2個字符。 因此,我必須使用line[0:3]來選擇前3個字符,它的工作原理 但是爲什麼?

我檢查的文件,沒有空間在每行開頭

任何人都知道這

+2

[good-primer-for-python-slice-notation](http://stackoverflow.com/questions/509211/good-primer-for-python-slice-notation) – RanRag 2012-02-28 00:53:30

回答

2

因爲你從片字符0之前字符2,即由字符0之前之前去在字符1之後。即,以字符0開始的前兩個字符。

+0

哦,我的英文!你的意思是「在字符0之前」,它是-1嗎? – JJgogo 2012-02-28 00:59:32

+0

否。它是字符0之前的一個點,但在前一個字符之後。 – 2012-02-28 01:04:15

3

第一個數字(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循環沒有執行)。如果您需要向後計數,則使用包含的結束界限和獨佔開始界限。

5

下面是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的邊緣之間的所有字符組成。

+0

我明白了。那真是很好的解釋!我會閱讀該教程! – JJgogo 2012-02-28 01:02:46

1

在Python切片中,您指定了您想要的第一個項目,然後是第一個項目不需要想要的。