繁体   English   中英

切片倒数第二个字符

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

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