2016-11-25 16 views
0

Ich bin auf der Suche nach einer einfachen Möglichkeit zu reinigen URLs zu reinigen wie folgt:Der beste Weg http Teil der URL

  • https:// ersetzt mit http://

  • URLs fehlen http(s) Präfix Beispiel: :// sollte habe es angehängt.

Gibt es eine Möglichkeit, dies aus der Box mit Python zu tun? Beispiel:

https://example.com/path/ ->http://example.com/path/

://example.com/path/ ->http://example.com/path/

Dank!

+0

Haben Sie versucht, eine Regex zu verwenden? –

Antwort

-3
<?php 
    if (!empty($_SERVER['HTTPS']) && ('on' == $_SERVER['HTTPS'])) { 
     $uri = 'https://'; 
    } else { 
     $uri = 'http://'; 
    } 
    $uri .= $_SERVER['HTTP_HOST']; 
    header('Location: '.$uri.'example.com/path/'); 
    exit; 
?> 

oder so somethnig ... Beachten Sie, dass seine ein PHP-Skript .... (PHP-Datei und PHP-Server benötigt wird.)

+1

Dies ist eine [tag: python] Frage. – Artyer

0

Versuchen Sie Folgendes:

def format_url(url): 
    if url.startswith('https'): 
     url = 'http:' + url.split(':')[1] 
    elif url.startswith(':'): 
     url = 'http' + url 
    return url 

Ausgang:

>>> format_url('https://example.com/path/') 
'http://example.com/path/' 
>>> format_url('://example.com/path/') 
'http://example.com/path/' 
+0

Würde diese Zeile für beide Szenarien ausreichen? 'url = 'http:' + url.split (':') [1]' – user2980769

+0

Ja, sollte es gut funktionieren – ettanany

-1

Nun gibt es eine Vielzahl von Möglichkeiten, um dies zu tun, einige involvin g Saiten und andere, die verschiedene Saiten kombinieren, also gebe ich euch beide.

Mit str.replace():

url = 'https://www.python.org' 
url.replace('https', 'http') 
print url 

Stücke zusammen Hinzufügen (diese Idee früher verwendet wurde, wurde aber könnte es auch wiederholen)

if url.startswith('https://): 
    url = 'http://' + rest_of_address 

Dies funktioniert durch Erfassen, wenn die Zeichenfolge beginnt mit https, und ersetzt es dann mit http, wenn es wahr ist. Wenn Sie einen anderen Parameter hinzufügen möchten, können Sie url.endswith verwenden oder 'if foo in url:' verwenden und los gehts.

1

Sie können dazu die Standard-Python-Bibliothek re verwenden.

import re 

# match strings that start with either 'http://' or '://' 
pattern = r'^(https://|://)' 

# replace matches with 'http://' 
repl = 'http://' 

test1 = 'https://stackoverflow.com' 
result1 = re.sub(pattern, repl, test1, flags=re.IGNORECASE) 
# result1 == 'http://stackoverflow.com' 

test2 = '://stackoverflow.com' 
result2 = re.sub(pattern, repl, test2, flags=re.IGNORECASE) 
# result2 == 'http://stackoverflow.com' 

Mit re.sub mit der Flagge re.IGNORECASE lassen Sie alle Gehäusevarianten von https:// Präfixe handhaben, ohne eine URL in Kleinbuchstaben umwandeln zu müssen und es vielleicht zu zerstören.