URL에서 마지막 슬래시 이후의 모든 항목을 가져오는 방법은 무엇입니까?
파이썬에서 URL의 마지막 슬래시 뒤에 오는 것을 어떻게 추출할 수 있습니까?예를 들어 이러한 URL은 다음을 반환해야 합니다.
URL: http://www.test.com/TEST1
returns: TEST1
URL: http://www.test.com/page/TEST2
returns: TEST2
URL: http://www.test.com/page/page/12345
returns: 12345
urlparse를 시도해 보았지만 다음과 같은 전체 경로 파일 이름이 제공됩니다.page/page/12345
.
고급스러운 것이 필요하지 않고 표준 라이브러리의 문자열 방법만 보면 '파일 이름' 부분과 나머지 부분 사이에 URL을 쉽게 나눌 수 있습니다.
url.rsplit('/', 1)
따라서 다음과 같은 기능을 통해 원하는 부분을 쉽게 얻을 수 있습니다.
url.rsplit('/', 1)[-1]
한 번 더 (idio(ma)tic) 방법:
URL.split("/")[-1]
rsplit
다음 작업을 수행해야 합니다.
In [1]: 'http://www.test.com/page/TEST2'.rsplit('/', 1)[1]
Out[1]: 'TEST2'
다음과 같이 할 수 있습니다.
head, tail = os.path.split(url)
tail은 파일 이름입니다.
urlparse는 당신이 원한다면 사용해도 좋습니다(예: 쿼리 문자열 매개 변수를 제거하기 위해).
import urllib.parse
urls = [
'http://www.test.com/TEST1',
'http://www.test.com/page/TEST2',
'http://www.test.com/page/page/12345',
'http://www.test.com/page/page/12345?abc=123'
]
for i in urls:
url_parts = urllib.parse.urlparse(i)
path_parts = url_parts[2].rpartition('/')
print('URL: {}\nreturns: {}\n'.format(i, path_parts[2]))
출력:
URL: http://www.test.com/TEST1
returns: TEST1
URL: http://www.test.com/page/TEST2
returns: TEST2
URL: http://www.test.com/page/page/12345
returns: 12345
URL: http://www.test.com/page/page/12345?abc=123
returns: 12345
os.path.basename(os.path.normpath('/folderA/folderB/folderC/folderD/'))
>>> folderD
이를 위한 일반적인 정규식 방법은 다음과 같습니다.
re.sub(r'^.+/([^/]+)$', r'\1', url)
먼저 URL에서 경로 요소를 추출합니다.
from urllib.parse import urlparse
parsed= urlparse('https://www.dummy.example/this/is/PATH?q=/a/b&r=5#asx')
그런 다음 문자열 함수를 사용하여 마지막 세그먼트를 추출할 수 있습니다.
parsed.path.rpartition('/')[2]
(결과적으로)'PATH'
)
경로만 얻은 다음 경로를 분할하는 데 사용합니다./
문자:
from urllib.parse import urlparse
my_url = "http://example.com/some/path/last?somequery=param"
last_path_fragment = urlparse(my_url).path.split('/')[-1] # returns 'last'
참고: URL이 다음으로 끝나는 경우/
문자, 위의 내용이 반환됩니다.''
(즉, 빈 문자열).그 사건을 다르게 처리하려면 마지막 추적을 제거해야 합니다./
경로를 분할하기 전의 문자:
my_url = "http://example.com/last/"
# handle URL ending in `/` by removing it.
last_path_fragment = urlparse(my_url).path.rstrip('/', 1).split('/')[-1] # returns 'last'
다음 솔루션은 다음을 사용합니다.pathlib
에서 얻은 경로를 구문 분석합니다.urllib.parse
터미널 슬래시가 있는 경우에도 마지막 부분을 가져올 수 있습니다.
import urllib.parse
from pathlib import Path
urls = [
"http://www.test.invalid/demo",
"http://www.test.invalid/parent/child",
"http://www.test.invalid/terminal-slash/",
"http://www.test.invalid/query-params?abc=123&works=yes",
"http://www.test.invalid/fragment#70446893",
"http://www.test.invalid/has/all/?abc=123&works=yes#70446893",
]
for url in urls:
url_path = Path(urllib.parse.urlparse(url).path)
last_part = url_path.name # use .stem to cut file extensions
print(f"{last_part=}")
산출량:
last_part='demo'
last_part='child'
last_part='terminal-slash'
last_part='query-params'
last_part='fragment'
last_part='all'
extracted_url = url[url.rfind("/")+1:];
URL을 분할하고 마지막 요소를 팝합니다.url.split('/').pop()
URL을 분할하고 마지막 요소를 팝합니다.
const plants = ['broccoli', 'cauliflower', 'cabbage', 'kale', 'tomato'];
console.log(plants.pop());
// expected output: "tomato"
console.log(plants);
// expected output: Array ["broccoli", "cauliflower", "cabbage", "kale"]
url ='http://www.test.com/page/TEST2'.split('/')[4]
print url
출력:TEST2
.
언급URL : https://stackoverflow.com/questions/7253803/how-to-get-everything-after-last-slash-in-a-url
'programing' 카테고리의 다른 글
마이그레이션 변경 열을 FK로 후속 처리한 후 실패 취소 (0) | 2023.06.14 |
---|---|
기본 쿼리에서 다중 위치 절이 작동하지 않는 이유 (0) | 2023.06.14 |
'List' 유형은 'List' 유형의 하위 유형이 아닙니다. (0) | 2023.06.14 |
Vuex, next, localStorage, 상태 덮어쓰기 (0) | 2023.06.14 |
APP_INITIALIZER에서 복구할 수 없는 예외를 처리하고 사용자에게 알리는 방법은 무엇입니까? (0) | 2023.06.14 |