根据需要在字符串之间添加文本

2024-06-28 11:12:21 发布

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

我想要一个替换同一字符串两次出现之间的文本的东西,如下所示:

Input:- "abcdefghcd","cd","k"
Output :- "abkefghk" 

你可能认为像.replace()这样一个简单的东西可以工作,但实际上不是这样。再举几个例子-

Input:- "123*45","*","u"
Output:- "123*45" # No change because there aren't two occurences of "*"

Input:- "text*text*hello*text","*","k"
Output:- "textktextkhello*text"

我不知道怎么做。有什么想法吗?你知道吗


Tags: no字符串text文本inputoutputcdchange
3条回答

计算出现次数,如果n为奇数,则只替换其中的前n-1个。你知道吗

>>> s, find, replace = "text*text*hello*text", "*", "k"
>>> s.replace(find, replace, 2*(s.count(find)//2))
'textktextkhello*text'

如果找到两个以上的匹配项,则拆分字符串并仅替换模式。你知道吗

>>> replace = lambda s, pat, sub: "".join([x + sub for x in s.split(pat) if x]) if len(s.split(pat))>2 else s
>>> replace("abcdefghcd", "cd", "k")
'abkefghk'
>>> replace("123*45", "*", "u")
'123*45'

如果您喜欢显式函数(推荐)而不是一行:

def replace(s, pat, sub, occ=2):
    """Return a string of replaced letters unless below the occurrences."""
    if len(s.split(pat)) > occ:
        return "".join([x + sub for x in s.split(pat) if x]) 
    return s

拆分和合并如何:

Input = "abcdefghcd"
replace_="cd"
with_='k'


data=Input.split(replace_)
print(with_.join(data))

输出:

abkefghk

相关问题 更多 >