繁体   English   中英

如何将字符串的最后一个字符分配给变量?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM