2016-09-21 4 views
-2

Dies kann ein einfaches Problem sein, aber ich bin nicht in der Lage, es zu lösen.fügen Sie eine Zeichenfolge in der Mitte einer URL

Ich habe eine URL als: "www.example.com/links".

möchte ich /skip_session/id=%s/ zwischen der URL hinzuzufügen, so dass es zu:

www.example.com/skip_session/id=%s/links 

jemand mir dabei helfen kann?

versuchte ich

url[23:]+ "/skip_session/id=%s/" + url[:52] 

verwenden, aber es gibt einen Fehler

+0

Haben Sie etwas selbst noch nicht ausprobiert? Auf welche Probleme hast du gestoßen? –

+0

@theflash Ich bin sicher, der Fehler ist Index außerhalb des Bereichs, da die URL selbst, ohne die zusätzliche Zeichenkette, nur 20 Zeichen lang ist, während du 'url [23:]' – thiruvenkadam

+0

@thiruvenkadam leidest, dies war nur ein Dummy-Beispiel show .. Ich benutze eine andere URL und hatte 23 Zeichen. –

Antwort

2

Da Sie Präfix eine Zeichenfolge auf dem Pfadabschnitt der URL möchten, können Sie die urllib.parse module (urlparse in Python 2 verwenden), zuerst die URL in Teile zu trennen:

try: 
    # Python 3 
    from urllib.parse import urlparse 
except ImportError: 
    # Python 2 
    from urlparse import urlparse 

def insert_path_prefix(url, prefix): 
    parts = urlparse(url) 
    updated = parts._replace(path=prefix + parts.path) 
    return updated.geturl() 

url = insert_path_prefix(url, '/skip_session/id=%s') 

berücksichtigen Sie dies t erfordert Hut, um Ihre URL korrekt gebildet wird (beginnt mit zumindest //, vorzugsweise mit einem vollständig geformten Schema wie http://) für die Analyse korrekt die Hostnamen auszusuchen:

>>> insert_path_prefix('http://www.example.com/links', '/skip_session/id=%s') 
'http://www.example.com/skip_session/id=%s/links' 

Wenn Ihre URL des // Teil fehlt Zu Beginn füge zuerst einen hinzu.

0

können Sie verwenden Zeichenfolge ersetzen oder String rsplit die Aufgabe

url_string = "www.example.com/links" 
parsed_url = url_string.rsplit("/", 1) 
new_url = "/skip_session/id=%s/".join(parsed_url) 

Oder dies zu tun:

url_string = "www.example.com/links" 
new_url = url_string.replace("/links", "/skip_session/id=%s/links") 
+0

Dies setzt wiederum voraus, dass es in der URL nur einen solchen Schrägstrich gibt. –

+0

Meine Ansicht ist, dass OP möchte die Zeichenfolge direkt vor dem letzten Teil der API und nicht als ein Vorgriff hinzufügen :-) Wie wenn es 'example.com/a/b/d' und muss es in' Beispiel verwandeln .com/a/b/c/d' – thiruvenkadam

+0

Das ist noch lange nicht sicher; Ich habe das OP aufgefordert, weitere Details zur Frage hinzuzufügen. –

Verwandte Themen