10

如何替换字符串中的术语 - 除了最后一个,它需要替换为不同的东西?

一个例子:

    letters = 'a;b;c;d'

需要改为

    letters = 'a, b, c & d'

我使用了替换功能,如下所示:

    letters = letters.replace(';',', ')

给予

    letters = 'a, b, c, d'

问题是我不知道如何将最后一个逗号替换为&符号。不能使用位置相关函数,因为可以有任意数量的字母,例如 'a;b' 或 'a;b;c;d;e;f;g' 。我已经搜索了 stackoverflow 和 python 教程,但找不到一个函数来替换最后找到的术语,有人可以帮忙吗?

4

3 回答 3

11

str.replace您还可以传递一个可选的第三个参数()count,用于处理正在完成的替换的数量。

In [20]: strs = 'a;b;c;d'

In [21]: count = strs.count(";") - 1

In [22]: strs = strs.replace(';', ', ', count).replace(';', ' & ')

In [24]: strs
Out[24]: 'a, b, c & d'

帮助str.replace

S.replace(old, new[, count]) -> string

Return a copy of string S with all occurrences of substring
old replaced by new.  If the optional argument count is
given, only the first count occurrences are replaced.
于 2013-04-28T21:20:45.217 回答
4
letters = 'a;b;c;d'
lettersOut = ' & '.join(letters.replace(';', ', ').rsplit(', ', 1))
print(lettersOut)
于 2013-04-28T21:20:37.080 回答
3

在不知道出现次数的情况下在一行中执行此操作的另一种方法:

letters = 'a;b;c;d'
letters[::-1].replace(';', ' & ', 1)[::-1].replace(';', ', ')
于 2013-04-28T22:44:19.300 回答