簡體   English   中英

Python3-字符串的最后一個字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM