[英]Slicing the second last character
我这里有这个字符串'[2,3,1,1,]'
我是切片新手,我只知道如何从头到尾切片,但不知道介于两者之间,甚至不确定这是否可能。
有人可以告诉我如何将这个'[2,3,1,1,]'
切片到这个'[2,3,1,1]'
所以只删除倒数第二个字符。
如果你只想删除倒数第二个字符,你可以这样做,
s = "[2,3,1,1,]"
s[:-2] + s[-1]
# '[2,3,1,1]'
s[:-2]
-> 将字符串从 0 到 -2 索引位置(没有 -2 索引)
s[-1]
-> 将获取最后一个元素
s[:-2] + s[-1]
-> 字符串的串联
如果你确定你有那个字符串,切片两个字符并重新添加]
!
source_string = "[2,3,1,1,]"
if source_string.endswith(",]"):
source_string = source_string[:-2] + "]"
但是,通常存储为字符串的列表不是很有用 - 您可能真的想将整个事物转换为数字集合(可能手动删除"[]"
并按,
或使用ast.literal_eval()
分割),可能将其转换回字符串以稍后显示
>>> source_string = "[2,3,1,1,]"
>>> import ast
>>> my_list = ast.literal_eval(source_string)
>>> my_list
[2, 3, 1, 1]
>>> str(my_list)
'[2, 3, 1, 1]'
您可以将其用于这种情况
txt = "[2,3,1,1,]"
print(f"{txt[:-2]}{txt[-1]}")
即使将列表存储为字符串也有点奇怪
txt[:-2] 将获取从 0 索引到 -2 索引的字符
txt[-1] 将得到最后一个字符“]”
然后我用一个 f"" 字符串连接两者
如果您不想使用 f 字符串,可以使用它
print(txt[:-2], txt[-1], sep="")
“sep”参数是这样的,两个打印件之间不会有空格
使用str.rstrip
等内置函数
l = '[2,3,1,1,]'
l_new = f"{l.rstrip('],')}]" # it doesn't matter the order!
print(l_new)
或str.rpartition
a, _, b = l.rpartition(',')
l_new = a + b
print(l_new)
您可以避免显式切片。 有关详细信息,请参阅 文档。
第一种方法是通用的,因此不会产生任何副作用。 如果最后一个字符不是,
则第二个可能会产生副作用。 如有必要,请使用检查,即str.endswith
来修复它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.