仅替换字符串的结尾

时间:2018-12-11 19:37:34

标签: python string list

让我无法在一行中执行以下操作使我很生气。我感觉可以通过列表理解来完成,但是如何呢?

given_string = "first.second.third.None"
string_splitted = given_string.split('.')
string_splitted[-1] = "fourth"
given_string = ".".join(string_splitted)

请注意,给定字符串中的点数(。)为常数(3)。所以我总是想替换字符串的第四个片段。

5 个答案:

答案 0 :(得分:4)

看来您应该能够做到这一点而无需拆分为数组。找到最后一个.并切片到那里:

> given_string = "first.second.third.None"
> given_string[:given_string.rfind('.')] + '.fourth'

'first.second.third.fourth'

答案 1 :(得分:3)

您可以尝试以下方法:

given_string = "first.second.third.None"
given_string = ".".join(given_string.split('.')[:-1] + ["fourth"])
print(given_string)

输出:

first.second.third.fourth

答案 2 :(得分:2)

试试这支衬垫:-

<div class="initialBalloon swingimage">
    <svg id="Balloon_1" data-name="Balloon_1".../></svg>
    <svg id="Pop1" class="hideme" data-name="Pop_1".../></svg>
</div>

.hideme { display:none }

输出:

print (".".join(given_string.split(".")[:-1]+["Fourth"]))

答案 3 :(得分:0)

您可以使用rsplit。无论最后一次拆分之前有多少个点,这都行得通

given_string = "first.second.third.None"
string_splitted = given_string.rsplit('.', 1)[0] + '.fourth'

print(string_splitted)
first.second.third.fourth

答案 4 :(得分:0)

my_string = "first.second.third.None"
my_sub = re.sub(r'((\w+\.){3})(\w+)', r'\1fourth', my_string)
print(my_sub)
first.second.third.fourth

有关此样式的详细说明,请参见:How to find and replace nth occurence of word in a sentence using python regular expression?