[英]Python3 - last character of the string
我想獲取字符串的最后一個字符。 我可以使用len
方法將其打印出來,但是使用VERY SAME方法獲取它時,我無法將其與另一個字符進行比較。 現在,我將在此處粘貼此WTF代碼。 請告訴我這是怎么回事。
fields = line.split(';')
last = fields[0]
capacity = fields[1]
region = fields[2]
print(capacity)
print('kek')
print(capacity[len(capacity)-1])
print('even more kek')
while capacity[len(capacity)-1] == '0':
capacity = capacity[1:len(capacity)-2]
last = last[1:len(last)-2]
現在,輸出
100000
kek
0
even more kek
Traceback (most recent call last):
File "/home/mekkanizer/Документы/proj/rossvyaz/making_insert_queries.py", line 52, in <module>
while capacity[len(capacity)-1] == '0':
IndexError: string index out of range
您最終得到了一個空字符串,因此不再需要索引:
>>> ''[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
您可以通過縮短while
循環中的capacity
來做到這一點:
capacity = capacity[1:len(capacity)-2]
您以100000
開始,然后輸入'000'
,然后輸入''
:
>>> capacity = '100000'
>>> capacity[1:len(capacity)-2]
'000'
>>> capacity[1:len(capacity)-2][1:len(capacity)-2]
''
您可能會錯過這樣做的機會,因為您永遠不會在循環中打印出capacity
的值。
您始終可以使用負索引從頭開始索引:
>>> 'last character'[-1]
'r'
這也適用於切片:
>>> 'last character'[5:-4]
'chara'
Traceback (most recent call last):
File "/home/mekkanizer/Документы/proj/rossvyaz/making_insert_queries.py", line 52, in <module>
while capacity[len(capacity)-1] == '0':
IndexError: string index out of range
唯一會發生這種情況的情況是, capacity
為空字符串,因此len(capacity)-1
為-1
,這不是指向空字符串的有效索引。
在循環的第一次迭代中(您已經檢查過),這種情況不會發生,但是在縮短capacity
之后,顯然會在隨后的迭代中發生。
我的建議是閱讀Python的切片符號,特別是使用負索引來引用字符串的末尾。 一種很好的資源是解釋Python的切片符號
在Python中,您可以使用負索引從序列末尾開始編號。 相應地, 最后一項的索引為-1。 也就是說,根本不需要您的構造capacity[1:len(capacity)-2]
。 其他人指出了實際發生的情況。
您可以使用切片符號,該字符串將為空字符串返回“”:
while capacity[len(capacity)-1:] == 0
或使用while能力捕獲空字符串:
while capacity and capacity[-1] == "0":
你不斷重新分配時縮短容量capacity
在while循環,從而最終將是一個空字符串:
capacity = capacity[1:len(capacity)-2]
foobar foobar <- start
oobar foob <- first iteration
obar fo <- second iteration
bar <- third iterations
a <- fourth iteration
empty string == index error
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.