如何仅删除字符串指定位置的单个字符而非全部相同字符?
解决只删除字符串指定索引字符的问题
你的代码之所以得到全是'B'的结果,是因为re.sub()会把字符串里所有匹配到的字符都替换掉,而你要删的是索引3的单个'P',用正则显然不合适。
下面是几种简单直接的实现方式:
方法1:字符串切片拼接(最推荐)
Python字符串是不可变的,直接通过切片把索引3之前的部分和索引3之后的部分拼接起来,就能跳过索引3的字符:
string1 = 'BPBPBPPPBPPPPPPBBBBPPBPBPPBPPPPBBPBPPBPBPP' new_text = string1[:3] + string1[4:]
string1[:3]取索引0到2的字符(前3个字符)string1[4:]取索引4到结尾的字符- 两者拼接就自动去掉了索引3的字符
方法2:带判断的安全写法
如果需要先确认索引3的字符确实是你要删的'P',或者避免索引越界,可以加个判断:
string1 = 'BPBPBPPPBPPPPPPBBBBPPBPBPPBPPPPBBPBPPBPBPP' target_index = 3 if len(string1) > target_index and string1[target_index] == 'P': new_text = string1[:target_index] + string1[target_index+1:] else: new_text = string1 # 索引不存在或者不是目标字符时,返回原字符串
这样就能精准删除指定位置的单个字符,不会误删其他相同字符。
内容的提问来源于stack exchange,提问作者Apichart Chaiyasat
相关产品推荐
相关产品推荐

