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オプションの 3 番目の引数( ) を渡すこともできます。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 に答える