2014-10-03 1 views
-1

꼬리말이 파이썬에서 문자열로 포함되도록하는 가장 좋은 방법은 무엇입니까?꼬리표가 파이썬에서 문자열로 포함되도록하십시오

한 예 : 스크립트에서 사용자가 제공 한 URL을 사용하여 URL을 구성해야하므로 후행 슬래시가 URL에 포함되도록하거나 다른 사람에게 직접 추가해야합니다.

문자열이 http://www.so.com 또는 http://www.so.com/ 인 경우 http://www.so.com/으로 끝나는 가장 좋은 방법은 무엇입니까?

내 솔루션은 re 모듈을 사용합니다.하지만 여전히 파이썬을 배우면서이 문제를 해결하는 것이 더 나은 방법인지 궁금합니다.

>>> import re 
>>> url = "http://www.so.com" 
>>> re.sub('//$', '/', re.sub('$', '/', url)) 
'http://www.so.com/' 
>>> url = "http://www.so.com/" 
>>> re.sub('//$', '/', re.sub('$', '/', url)) 
'http://www.so.com/' 

UPDATE

내가 여분의 모듈을 사용하지 않고, 순수하게 파이썬 솔루션을 찾고 있음을 명확히해야한다. 파이썬 트릭과 모범 사례를 배우는 것 중 일부.

+0

대신 조작을 경로를 손으로 잡으면 이런 종류의 일에'urllib.parse'를 사용할 것입니다. 그렇다면''/ ''에 대해 걱정할 필요가 없습니다. ['urllib.parse.urljoin'] (https://docs.python.org/3/library/urllib.parse.html#urllib.parse.urljoin)을 사용하여 URL을 구성 할 수 있습니다. – CoryKramer

+0

사실, urljoin 모듈을 사용할 수 있습니다.이 문제는 제가 풀려고했던 문제의 예일뿐입니다. – bbbco

+0

[직면 한 실제 문제를 기반으로 실용적이고 신뢰할 수있는 질문을해야합니다.] (http://stackoverflow.com/help/dont-ask) "모범 사례"에 대한 질문은 여기서는 권장하지 않습니다. – Air

답변

2

당신이 [-1] 인덱스 문자열의 마지막에 액세스 할 수 있습니다

>>> url = "http://www.so.com" 
>>> if url[-1]!='/': 
... url+='/' 
... 
>>> url 
'http://www.so.com/' 
+0

순수 Python 응답에 감사드립니다. – bbbco

+0

당신은 오신 것을 환영합니다! ;) – Kasramvd

2

을이 같은 응용 프로그램의 경우, 당신은 아마 수동으로 slashs을 관리하기 위해 (파이썬 2 urlparse.urljoin) urllib.parse.urljoin 필요 없음을 사용해야합니다.

from urllib.parse import urljoin 
url_base = "http://www.so.com" 
add = "foo/bar" 

print(urljoin(url_base, add)) 
# http://www.so.com/foo/bar 

파일 경로의 경우 os.path.join은 유사한 기능입니다. 어려운 읽기 한 줄 들어

1

, 당신이 할 수 있습니다 :

url = "http://www.so.com" 
url += ['/', ''][(url or '')[-1] == '/'] 

(url or '') -이 부분은 기본적으로 문자열로 URL을 설정 그것은 거짓, 널 (null), 빈 목록 등의 경우 ..

[(url or '')[-1] == '/'] -이 부분은 URL이 문자열로 끝나지 않는 경우 0 값을 가져야하는 색인 ​​조회이며, 그렇지 않은 경우 1입니다.

['/', ''] - 앞서 언급 한 인덱스 조회의 값에 근거 해, 슬래시 또는 url

+0

아니요, 저는 이것이 이것이 답이라고 생각하지 않습니다. 나는 단지 아주 중요한 질문에 재미있는 비판적인 생각을 추가하고 싶었다. –

1
re.sub('/?$', '/', url) 

예제의 끝에 빈 문자열 중 하나를 추가합니다 :

>>> import re 
>>> re.sub('/?$', '/', 'http://www.so.com/') 
'http://www.so.com/' 
>>> re.sub('/?$', '/', 'http://www.so.com') 
'http://www.so.com/' 
관련 문제