从字符串中删除最后一个字符

Posted

技术标签:

【中文标题】从字符串中删除最后一个字符【英文标题】:Remove final character from string 【发布时间】:2013-03-06 20:47:36 【问题描述】:

假设我的字符串有 10 个字符长。

如何删除最后一个字符?

如果我的字符串是"abcdefghij"(我不想替换'j' 字符,因为我的字符串可能包含多个'j' 字符)我只希望最后一个字符消失。无论它是什么或发生多少次,我都需要。

【问题讨论】:

我不认为这是重复的。 在另一个问题中,OP 通常要求提供子字符串。这个 OP 要求一个 very 特定的子字符串,这通常非常有用。我相信在这里让人们搜索和回答是有用的。对于可能想要 1) 从一堆路径 2) 删除最后一个 CSV 的最后一个逗号的人来说,这将是很好的列 3)从一堆句子字符串的末尾删除尾随句点/句号(任何标点符号)... [更多示例,无字符] 特别是当一个人刚接触编程时,要求一个人从 dup 链接中的答案中找出my_str[:-1] 似乎有点跳跃。 由于链接的站点现在出现(请参阅lynx 命令),因此很难找到。 $ lynx -dump https://web.archive.org/web/20200826203245/https://***.com/questions/663171/how-do-i-get-a-substring-of-a-string-in-python | grep -n "\[[:][-]1\]" \n 540: print(a[:-1]) \n 542: In the above code, [:-1] declares to print from the starting till the \n 548: `Note: Here a [:-1] is also the same as a [0:-1] and a [0:len(a)-1]跨度> 我相信这是How do I get a substring of a string in Python? 的副本。接受的答案显示了如何使用 [:-2] 删除字符串的最后两个字符。我相信任何程序员都应该不难推断出[:-1] 可以用来删除最后一个字符。 【参考方案1】:

简单:

my_str =  "abcdefghij"
my_str = my_str[:-1]

尝试以下代码 sn-p 通过将字符串转换为列表来更好地理解它的工作原理:

str1 = "abcdefghij"
list1 = list(str1)
print(list1)
list2 = list1[:-1]
print(list2)

如果您想接受来自用户的字符串:

str1 = input("Enter :")
list1 = list(str1)
print(list1)
list2 = list1[:-1]
print(list2)

要让它从句子中删除最后一个单词(单词之间用空格隔开):

str1 = input("Enter :")
list1 = str1.split()
print(list1)
list2 = list1[:-1]
print(list2)

【讨论】:

是的,st[-1] 只是st 的最后一个字符 实际上,即使st 为空,该切片仍然可以工作。好吧,它仍然会返回一个空字符串,但不会出错。 如果你有一个单词列表,你想删除每个单词的最后一个字符怎么办? [蓝色、红色、绿色] => [蓝色、红色、绿色] ? [i[:-1] for i in ['blue','red','green']] 看看这些例子,值得一提的是列表是可变的,list.pop() 方法是处理列表时要走的路,因为它删除了最后一个项目O(1),而[:-1] 切片创建一个列表的副本,其中没有O(n-1) 时间加上O(n-1) 空间中的最后一个元素。字符串是不可变的 - 所以没有什么可添加的。【参考方案2】:

您正在尝试做的是 Python 中 string slicing 的扩展:

假设所有字符串的长度为 10,最后一个要删除的字符:

>>> st[:9]
'abcdefghi'

要删除最后一个 N 字符:

>>> N = 3
>>> st[:-N]
'abcdefg'

【讨论】:

【参考方案3】:

这应该确实有效:

string = string[0:len(string) - 2]

【讨论】:

您的代码确实有效,但它松散且不符合 Python 标准。当您可以与string[:-2] 实现相同的目标时,为什么还要写string[0:len(string) - 2],避免对len() 进行多余的函数调用并避免十几个不必要的字符?精益的 Pythonic 代码更易于阅读和维护。而且在某些情况下(比如这个)也更有效率。【参考方案4】:

最简单的解决方案是使用string slicing。

Python 2/3:

source[0: -1]  # gets all string but not last char

Python 2:

source = 'ABC'    
result = "".format(source[0: -1], 'D')
print(result)  # ABD

Python 3:

source = 'ABC'    
result = f"source[0: -1]D"
print(result)  # ABD

【讨论】:

以上是关于从字符串中删除最后一个字符的主要内容,如果未能解决你的问题,请参考以下文章

从字符串中删除最后一个字符。斯威夫特语言

如何从字符串中删除最后一个字符

从字符串中删除最后一个字符

无法从字符串中删除最后一个字符

php如何从php中的字符串中删除最后一个字符[重复]

从循环中生成的字符串中删除最后一个字符