[Python-de] Alternative zu rpartition

Stefan Schwarzer sschwarzer at sschwarzer.net
Fr Aug 13 13:29:58 UTC 2010


Hallo Johannes,

On 2010-08-13 13:08, Johannes Markert wrote:
> ich bin aus unbeeinflussbaren Gründen auf Python 2.4 angewiesen.
> Und da ist die String-Operation rpartition() noch nich implementiert.
> Welche Alternativen gibt es für diese ältere Version?

auf die Schnelle habe ich keinen Ersatz für Python 2.4
gefunden, daher hier eine Implementierung als Funktion, die
sich wie `rpartition` verhalten sollte. Das Schwierigste war,
die richtigen Rückgabetypen für die Strings sicherzustellen.

Ich garantiere nicht für Fehlerfreiheit! :)

def rpartition(s, sep):
    """Implementation of `rpartition` as a function for Python < 2.5.

    See http://docs.python.org/library/stdtypes.html#str.rpartition .

    Warning: Not thoroughly tested.
    """
    parts = s.split(sep)
    # If one of the arguments is a unicode string, returned strings
    # need to be unicode strings as well. `string_type(...)` may
    # raise a `UnicodeDecodeError`, which results in the same behavior
    # as that of `str.rpartition`/`unicode.rpartition`.
    string_type = type(parts[0])
    if len(parts) == 1:
        # Separator not found.
        empty_string = string_type("")
        return (empty_string,
                empty_string,
                string_type(s))
    else:
        return (string_type(sep).join(parts[:-1]),
                string_type(sep),
                string_type(parts[-1]))

Viele Grüße
Stefan



Mehr Informationen über die Mailingliste python-de