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

时间:2016-06-28 04:02:02

标签: python string python-2.7 python-3.x substring

我从字符串中删除了一个字符:

S = "abcd"
Index=1 #index of string to remove
ListS = list(S)
ListS.pop(Index)
S = "".join(ListS)
print S
#"acd"

我确定这是最好的方法。

修改 我没有提到我需要操作长度为~10 ^ 7的字符串大小。 因此关心效率非常重要。

  

有人能帮助我吗?哪种pythonic方式呢?

5 个答案:

答案 0 :(得分:21)

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

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

或更一般地

xyForm = new XYplotForm();
        xyForm.Plot(freqLC40, ampMaxLC40, "LC-40 Max Amplitude");
        xyForm.Show();

        Bitmap image = new Bitmap(xyForm.Width, xyForm.Height);
        System.Drawing.Rectangle target_bounds = default(System.Drawing.Rectangle);
        target_bounds.Width = xyForm.Width;
        target_bounds.Height = xyForm.Height;
        target_bounds.X = 0;
        target_bounds.Y = 0;
        xyForm.DrawToBitmap(image, target_bounds);
        string filename =  "C:\\Graph\\LC40_Max Amplitude.Png";
        image.Save(filename, System.Drawing.Imaging.ImageFormat.Png); 

您可以在此处找到许多问题的答案(包括此类问题):How to delete a character from a string using python?。但是,这个问题名义上是按价值而不是按指数删除。

答案 1 :(得分:3)

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

>>> 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'

请记住,索引是从零开始的。

答案 2 :(得分:2)

S = "abcd"
Index=1 #index of string to remove
S = S.replace(S[Index], "")
print(S)

希望对您有帮助!

答案 3 :(得分:0)

您可以使用""。

替换索引字符
str = "ab1cd1ef"
Index = 3
print(str.replace(str[Index],"",1))

答案 4 :(得分:0)

def missing_char(str, n):

  front = str[:n]   # up to but not including n
  back = str[n+1:]  # n+1 through end of string
  return front + back