Hướng dẫn python remove scheme from url - python xóa lược đồ khỏi url

Tôi đang làm việc với một ứng dụng trả về URL, được viết bằng Flask. Tôi muốn URL hiển thị cho người dùng càng sạch càng tốt vì vậy tôi muốn loại bỏ http:// khỏi nó. Tôi đã nhìn và tìm thấy thư viện

stackoverflow.com/questions/tagged/python?page=2
0, nhưng không thể tìm thấy bất kỳ ví dụ nào về cách làm điều này.

Điều gì sẽ là cách tốt nhất để đi về nó, và nếu

stackoverflow.com/questions/tagged/python?page=2
0 là quá mức cần thiết thì có một cách đơn giản hơn? Chỉ đơn giản là sẽ loại bỏ chuỗi con "http://" khỏi URL chỉ bằng cách sử dụng các công cụ phân tích cú pháp chuỗi thông thường là thực hành xấu hoặc gây ra vấn đề?

Hướng dẫn python remove scheme from url - python xóa lược đồ khỏi url

faruk13

1.2081 Huy hiệu vàng16 Huy hiệu bạc22 Huy hiệu đồng1 gold badge16 silver badges22 bronze badges

Đã hỏi ngày 10 tháng 2 năm 2014 lúc 20:39Feb 10, 2014 at 20:39

Tôi không nghĩ

stackoverflow.com/questions/tagged/python?page=2
0 cung cấp một phương thức hoặc chức năng duy nhất cho việc này. Đây là cách tôi làm điều đó:

from urlparse import urlparse

url = 'HtTp://stackoverflow.com/questions/tagged/python?page=2'

def strip_scheme(url):
    parsed = urlparse(url)
    scheme = "%s://" % parsed.scheme
    return parsed.geturl().replace(scheme, '', 1)

print strip_scheme(url)

Output:

stackoverflow.com/questions/tagged/python?page=2

Nếu bạn sử dụng (chỉ) phân tích cú pháp chuỗi đơn giản, bạn sẽ phải đối phó với

stackoverflow.com/questions/tagged/python?page=2
4 và có thể chính các chương trình khác. Ngoài ra, điều này xử lý vỏ bọc kỳ lạ của sơ đồ.

Đã trả lời ngày 10 tháng 2 năm 2014 lúc 20:56Feb 10, 2014 at 20:56

Lukas Graflukas GrafLukas Graf

28.2k8 Huy hiệu vàng75 Huy hiệu bạc88 Huy hiệu Đồng8 gold badges75 silver badges88 bronze badges

1

Nếu bạn đang sử dụng các chương trình này thay vì sử dụng thay thế, tôi khuyên bạn nên tạo URLPARE tạo lại URL mà không có sơ đồ.

Đối tượng phân tích cú pháp là một tuple. Vì vậy, bạn có thể tạo một loại khác đang loại bỏ các trường bạn không muốn.

# py2/3 compatibility
try:
    from urllib.parse import urlparse, ParseResult
except ImportError:
    from urlparse import urlparse, ParseResult


def strip_scheme(url):
    parsed_result = urlparse(url)
    return ParseResult('', *parsed_result[1:]).geturl()

Bạn có thể loại bỏ bất kỳ thành phần nào của ParsedResult bằng cách thay thế đầu vào bằng một chuỗi trống.

Điều quan trọng cần lưu ý là có một sự khác biệt về chức năng giữa câu trả lời này và câu trả lời của @lukas Graf. Sự khác biệt có khả năng nhất là thành phần '//' của URL về mặt kỹ thuật không phải là sơ đồ, vì vậy câu trả lời này sẽ bảo tồn nó, trong khi nó sẽ vẫn ở đây.

>>> Lukas_strip_scheme('https://yoman/hi?whatup')
'yoman/hi?whatup'
>>> strip_scheme('https://yoman/hi?whatup')
'//yoman/hi?whatup'

Đã trả lời ngày 25 tháng 1 năm 2018 lúc 5:51Jan 25, 2018 at 5:51

BrianbrianBrian

8779 Huy hiệu bạc16 Huy hiệu Đồng9 silver badges16 bronze badges

Một tìm kiếm regex đơn giản và thay thế các tác phẩm.

import re
def strip_scheme(url: str):
    return re.sub(r'^https?:\/\/', '', url)

Đã trả lời ngày 21 tháng 4 năm 2021 lúc 22:46Apr 21, 2021 at 22:46

Tobias Ernsttobias ErnstTobias Ernst

3.7961 Huy hiệu vàng29 Huy hiệu bạc27 Huy hiệu đồng1 gold badge29 silver badges27 bronze badges

Tôi đã thấy điều này được thực hiện trong thư viện bình và phần mở rộng. Đáng chú ý là bạn có thể làm điều đó mặc dù nó sử dụng một thành viên được bảo vệ (._replace) của Parseresult/Splitresult.although it does make use of a protected member (._replace) of the ParseResult/SplitResult.

url = 'HtTp://stackoverflow.com/questions/tagged/python?page=2'
split_url = urlsplit(url) 
# >>> SplitResult(scheme='http', netloc='stackoverflow.com', path='/questions/tagged/python', query='page=2', fragment='')
split_url_without_scheme = split_url._replace(scheme="")
# >>> SplitResult(scheme='', netloc='stackoverflow.com', path='/questions/tagged/python', query='page=2', fragment='')
new_url = urlunsplit(split_url_without_scheme)

Đã trả lời ngày 15 tháng 2 năm 2019 lúc 7:24Feb 15, 2019 at 7:24

Sẽ sẽWill

1.51210 huy hiệu bạc21 Huy hiệu đồng10 silver badges21 bronze badges

3

Theo tài liệu (https://docs.python.org/3/l Library/urllib.parse.html#url-parsing) Giá trị trả về là một bộ thuật được đặt tên, các mục của nó có thể được truy cập bằng chỉ mục hoặc theo tên được đặt tên. Vì vậy, chúng tôi có thể truy cập vào một số phần của URL phân tích cú pháp bằng cách sử dụng các thuộc tính được đặt tên:

from urllib.parse import urlparse

def delete_http(link):
    url = urlparse(link)
    return url.netloc + url.path

user_link = input()
print(delete_http(user_link))

Input: https://stackoverflow.com/ unput: stackoverflow.com/

Đã trả lời ngày 5 tháng 2 lúc 18:01Feb 5 at 18:01

Hướng dẫn python remove scheme from url - python xóa lược đồ khỏi url

Làm thế nào để bạn tước một url trong Python?

Hàm Sub () để loại bỏ các URL khỏi văn bản trong Python.Ở đó.Hàm Sub () cung cấp cách tiếp cận đơn giản nhất để loại bỏ các URL khỏi văn bản trong Python.Hàm này được sử dụng để thay thế một chuỗi con nhất định bằng một chuỗi con khác trong bất kỳ chuỗi được cung cấp. to remove URLs from Text in Python. The re. sub() function provides the most straightforward approach to remove URLs from text in Python. This function is used to substitute a given substring with another substring in any provided string.

Làm cách nào để xóa văn bản khỏi URL trong Python?

Sử dụng Re.Phương thức phụ () để xóa URL khỏi văn bản, ví dụ:Kết quả = Re.sub (r'http \ s+',' ', my_string).

Urllib trong Python là gì?

Gói Urllib là mô -đun xử lý URL cho Python.Nó được sử dụng để tìm nạp các URL (bộ định vị tài nguyên thống nhất).Nó sử dụng chức năng URLOPEN và có thể tìm nạp các URL bằng nhiều giao thức khác nhau.Urllib là một gói thu thập một số mô -đun để làm việc với các URL, chẳng hạn như: Urllib.URL handling module for python. It is used to fetch URLs (Uniform Resource Locators). It uses the urlopen function and is able to fetch URLs using a variety of different protocols. Urllib is a package that collects several modules for working with URLs, such as: urllib.

Làm thế nào để bạn thay đổi URL trong Python?

Phương thức thay thế_urls () trong Python thay thế tất cả các URL trong một văn bản nhất định bằng chuỗi thay thế.replace_urls() method in Python replaces all the URLs in a given text with the replacement string.