Python通过索引从字符串中删除char的最佳方法

Python best way to remove char from string by index

我要从字符串中删除一个字符,如下所示:

1
2
3
4
5
6
7
S ="abcd"
Index=1 #index of string to remove
ListS = list(S)
ListS.pop(Index)
S ="".join(ListS)
print S
#"acd"

我相信这不是最好的方法。

编辑我没有提到我需要操纵一个长度为10^7的字符串大小。所以关注效率是很重要的。

Can someone help me. Which pythonic way to do it?


使用切片可以绕过所有列表操作:

1
S = S[:1] + S[2:]

或者更一般地说

1
S = S[:Index] + S[Index + 1:]

您的问题(包括这样的问题)的许多答案可以在这里找到:如何使用python从字符串中删除字符?但是,这个问题名义上是关于按值删除,而不是按索引删除。


切片是我能想到的最好和最简单的方法,这里有一些其他的选择:

1
2
3
4
5
6
7
8
9
10
11
12
13
>>> s = 'abcd'
>>> def remove(s, indx):
        return ''.join(x for x in s if s.index(x) != indx)

>>> remove(s, 1)
'acd'
>>>
>>>
>>> def remove(s, indx):
        return ''.join(filter(lambda x: s.index(x) != 1, s))

>>> remove(s, 1)
'acd'

记住,索引是基于零的。


您可以用""替换索引字符。

1
2
3
str ="ab1cd1ef"
Index = 3
print(str.replace(str[Index],"",1))