[英]How to assign the last character of a string to a variable?
我试图将字符串的最后一个字符存储在变量中,而不事先知道字符串的长度(该字符串最初是从列表中读取的)。 我有:
last = record[-1]
lastInd = len(last) - 1
lastChar = last[lastInd]
但是我收到以下错误:
lastChar = last[lastInd]
IndexError: string index out of range
如果我尝试:
lastChar = last[-1]
我犯了同样的错误:
lastChar = last[-1]
IndexError: string index out of range
我真的不明白这是怎么回事? 我的索引不正确吗?
正如inspectorG4dget所说,从last[-1]
获取此异常的唯一方法是,如果last
是一个空字符串。
如果您想知道如何处理……好吧,这取决于您要执行的操作。
通常,如果您试图获取字符串的最后一个字符,则希望它不是空的,因此,如果它意外为空,则应该是一个错误。
但是,如果您要在字符串为npt空或字符串为空的情况下获取最后一个字符,则可以通过三种方式(至少在代码中以pythonic-ness的降序)进行操作由新手编写。
首先,有一个EAFP (“比许可更容易请求宽恕)。假设它可以工作, try
并适当地处理意外失败:
try:
lastChar = last[-1]
except IndexError:
lastChar = ''
然后是LBYL (跨越式发展)。 提前检查意外情况:
if last:
lastChar = last[-1]
else:
lastChar = ''
最后,有一个过分的聪明。 如果不仔细考虑,请编写您三个月后不会理解的代码:
lastChar = last[-1:]
这将返回从最后一个字符到末尾的所有字符。 如果有任何字符,则与最后一个字符相同。 如果没有字符,那没什么。
请注意,这实际上只能按预期工作,因为字符串的各个元素本身就是字符串。 如果尝试从这样的列表中获取最后一个元素,则将得到一个包含1个元素的列表或一个空列表,而不是单个可能为空的元素。
这是因为last
是一个空字符串。
看一下这个:
>>> last = 'a'
>>> last[-1]
'a'
>>> last = ''
>>> last[-1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
如果您希望最后一个字符为空字符串,以防万一您有一个空字符串作为最后一条记录,则可以尝试以下操作:
if last == '': # or `if not last`
lastChar = ''
或者,您可以使用三元运算符:
lastChar = last[-1] if last else ''
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.