我从字符串中删除了一个字符:
S = "abcd"
Index=1 #index of string to remove
ListS = list(S)
ListS.pop(Index)
S = "".join(ListS)
print S
#"acd"
我确定这是不最好的方法。
修改 我没有提到我需要操作长度为~10 ^ 7的字符串大小。 因此关心效率非常重要。
有人能帮助我吗?哪种pythonic方式呢?
答案 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