71

2つの「0」(str)を含む文字列があり、インデックス4の「0」(str)のみを削除したい

.replaceを呼び出してみましたが、明らかにすべての「0」が削除され、位置4のcharを削除する関数が見つかりません。

誰かが私にヒントを持っていますか?

4

8 に答える 8

106

スライスを使用して、削除するインデックスを除いた文字列を再構築します。

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

補足として、replaceすべてゼロを移動する必要はありません。最初の指定を削除するだけの場合は、1に指定しますcount

'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 に答える