71

我有一个包含两个“0”(str)的字符串,我只想删除索引 4 处的“0”(str)

我曾尝试调用 .replace 但显然这会删除所有“0”,并且我找不到可以为我删除位置 4 的字符的函数。

有人对我有提示吗?

4

8 回答 8

106

使用切片,重建字符串减去要删除的索引:

newstr = oldstr[:4] + oldstr[5:]
于 2013-01-07T15:04:39.667 回答
25

作为旁注,replace不必移动所有零。如果您只想删除第一个指定count为 1:

'asd0asd0'.replace('0','',1)

出去:

'asdasd0'

于 2013-01-07T15:08:12.077 回答
18

s这是我对任何字符串和任何索引的通用解决方案 i

def remove_at(i, s):
    return s[:i] + s[i+1:]
于 2018-10-31T16:33:00.577 回答
6

切片有效(并且是首选方法),但如果需要更多操作,则只是一种替代方法(但转换为列表无论如何都不会受到伤害):

>>> a = '123456789'
>>> b = bytearray(a)
>>> del b[3]
>>> b
bytearray(b'12356789')
>>> str(b)
'12356789'
于 2013-01-07T15:28:41.993 回答
6

另一种选择,使用列表理解和连接:

''.join([_str[i] for i in xrange(len(_str)) if i  != 4])
于 2013-01-07T17:02:45.497 回答
3
rem = lambda x, unwanted : ''.join([ c for i, c in enumerate(x) if i != unwanted])
rem('1230004', 4)
'123004'
于 2019-07-23T08:16:17.450 回答
1
def remove_char(input_string, index):
    first_part = input_string[:index]
    second_part = input_string[index+1:]
    return first_part + second_part

s = 'aababc'
index = 1
remove_char(s,index)

从零开始的索引

于 2019-06-04T02:40:59.763 回答
0

试试这个代码:

s = input() 
a = int(input()) 
b = s.replace(s[a],'')
print(b)
于 2018-08-29T06:41:56.250 回答