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