当我们有多个子字符串时,如何使用python替换字符串的特定子字符串?

2024-05-15 06:24:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个句子

s = 'alpha-catenin inhibits beta-catenin signaling by preventing formation of a beta-catenin*T-cell factor*DNA complex.'

现在,我想用'PROTEIN'替换第一个出现的'beta-catenin',而第二个出现的beta-catenin不应该被替换,即所需的输出应该是

rep_s = s = 'alpha-catenin inhibits PROTEIN signaling by preventing formation of a beta-catenin*T-cell factor*DNA complex.'

此外,我还有第一次出现的β-连环蛋白的索引值和长度,即'offset'=23'length'=12

我试过一个密码

s1.replace(s1[23:(23+12)], 'PROTEIN')

但是产出来了

'alpha-catenin inhibits PROTEIN signaling by preventing formation of a PROTEIN*T-cell factor*DNA complex.'

它只是简单地取代了所有这两种β-连环蛋白,这是不可取的。请帮我得到我想要的输出


Tags: ofalphabycellbetadnasignalingfactor
3条回答

您可以通过以下两种方式对此进行归档

方式1:使用字符串替换功能替换第一次出现的字符串

s = 'alpha-catenin inhibits beta-catenin signaling by preventing formation of a beta-catenin*T-cell factor*DNA complex.'
s.replace("beta-catenin", "PROTEIN", 1)
print(s)

输出:

alpha-catenin inhibits PROTEIN signaling by preventing formation of a beta-catenin*T-cell factor*DNA complex.

方法2:使用python的正则表达式

import re
s = 'alpha-catenin inhibits beta-catenin signaling by preventing formation of a beta-catenin*T-cell factor*DNA complex.'
s = re.sub("beta-catenin", "PROTEIN", s, 1)
print(s)

输出:

alpha-catenin inhibits PROTEIN signaling by preventing formation of a beta-catenin*T-cell factor*DNA complex.

如果要替换第一个参数,可以使用replace()中的count可选参数。当n!=一,

s.replace('beta-catenin', 'PROTEIN', 1)

replace替换给定子字符串的每次出现。它不知道你已经给了它一片;它只接收字符串'beta-catenin'作为要查找和替换的对象

但是,由于您已经找到了要剪切的索引,您可以仅通过切片来执行此操作:

result = s1[:23] + 'PROTEIN' + s1[23+12:]

相关问题 更多 >

    热门问题