python模式检测和替换字符串

2024-10-01 00:26:11 发布

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

我对Python字符串操作有一个问题:

这是一个字符串,其中有多个(点)

比如: "a3a.b1b2b.cccc.ded.f.g"

问题是在最后一个(点)之前找到内容,这是 "a3a.b1b2b.cccc.ded.f"在本例中(我们称之为字符串\在\最后\点之前)

我们需要将最后一个点之前的字符串替换为最后一个点之前的字符串+“\u已批准”。 因此,结果应该是: "a3a.b1b2b.cccc.ded.f_Approved.g"

还有一些例子:

"a.b" -> "a_Approved.b"
"first.second.c" -> "first.second_Approved.c"

我可以定义一个函数来实现这一点,我想知道是否有任何高级方法,比如使用.replace()来实现它。谢谢


Tags: 方法函数字符串内容定义replace例子cccc
3条回答

这是一个你可以尝试的解决方案

def _replace(input_):
    sub_ = input_[input_.rfind("."):]
    return input_.replace(sub_, f"_Approved{sub_}")


print(_replace("a.b"))
print(_replace("first.second.c"))

a_Approved.b
first.second_Approved.c
# your String
string = 'a3a.b1b2b.cccc.ded.f.g'
# find the last dot character in your string
StringIndex = string.rfind('.')
# create a temporary list of your string and swap the last dot with your preferred string (_Approved.)
temp = list(string)
temp[StringIndex] = '_Approved.'
# replace
string = ''.join(temp)
# print
print('Old String: a3a.b1b2b.cccc.ded.f.g \nNew String: '+ string)

# OUTPUT
# Old String: a3a.b1b2b.cccc.ded.f.g 
# New String: a3a.b1b2b.cccc.ded.f_Approved.g

您可以使用限制为1的join+rsplit

>>> "_Approved.".join("a.b".rsplit(".",1))
'a_Approved.b'
>>> "_Approved.".join("first.second.c".rsplit(".",1))
'first.second_Approved.c'

相关问题 更多 >