簡體   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