I가 다음 문자열파이썬 - 추출 중요한 문자열 정보
http://example.com/variable/controller/id32434242423423234?param1=321¶m2=4324342
어떻게이 경우에는 id 값을 추출하는 가장 좋은 방법 - 32434242423423234
Regardz, Mladjo
I가 다음 문자열파이썬 - 추출 중요한 문자열 정보
http://example.com/variable/controller/id32434242423423234?param1=321¶m2=4324342
어떻게이 경우에는 id 값을 추출하는 가장 좋은 방법 - 32434242423423234
Regardz, Mladjo
regular expression을 사용할 수 있습니다 (예 :
).import re
s = "http://example.com/variable/controller/id32434242423423234?param1=321¶m2=4324342"
m = re.search(r'controller/id(\d+)\?',s)
if m:
print "Found the id:", m.group(1)
값이 문자열이 아닌 숫자로 필요하면 int(m.group(1))
을 사용할 수 있습니다. 코드의 더 큰 목표에 따라 더 적절할 수있는 다른 방법이 많이 있지만 상황을 더 이상 말하기는 어렵습니다.
>>> s
'http://example.com/variable/controller/id32434242423423234?param1=321¶m2=4324342'
>>> s.split("id")
['http://example.com/variable/controller/', '32434242423423234?param1=321¶m2=4324342']
>>> s.split("id")[-1].split("?")[0]
'32434242423423234'
>>>
>>> import urlparse
>>> res=urlparse.urlparse("http://example.com/variable/controller/id32434242423423234?param1=321¶m2=4324342")
>>> res.path
'/variable/controller/id32434242423423234'
>>> import posixpath
>>> posixpath.split(res.path)
('/variable/controller', 'id32434242423423234')
>>> directory,filename=posixpath.split(res.path)
>>> filename[2:]
'32434242423423234'
urlparse
및 posixpath
를 사용하여이 경우에 너무 많이,하지만 난 그것을 할 수있는 깨끗한 방법입니다 생각할 수 있습니다.
Regex는 이동하는 방법이지만 간단한 것들은 string parser이라고 썼습니다. 어떤 식 으로든, 문자열 형식화 연산의 (완료되지 않은) 역 연산은 PEP 3101입니다. 이는 문자열을 지정하는 다른 방법을 배우지 않아도되므로 매우 편리합니다. 예를 들어
: 귀하의 경우를 들어
>>> Parser('The answer is {:d}')('The answer is 42')
42
, 당신은 출력
>>> url = 'http://example.com/variable/controller/id32434242423423234?param1=321¶m2=4324342'
>>> fmt = 'http://example.com/variable/controller/id{:d}?param1=321¶m2=4324342'
>>> Parser(fmt)(url)
32434242423423234
로 int를 원하는 경우 문자열을 원하는 경우 : 파서는 반대를하지
>>> 'The answer is {:d}'.format(42)
The answer is 42
:
>>> fmt = 'http://example.com/variable/controller/id{:s}?param1=321¶m2=4324342'
>>> Parser(fmt)(url)
32434242423423234
당신이 딕셔너리에서 더 많은 일을 캡처하려는 경우
>>> fmt = 'http://example.com/variable/controller/id{id:s}?param1={param1:s}¶m2={param2:s}'
>>> Parser(fmt)(url)
{'id': '32434242423423234', 'param1': '321', 'param2': '4324342'}
또는 튜플에서
:당신이 딕셔너리에서 더 많은 일을 캡처하려는 경우
>>> fmt = 'http://example.com/variable/controller/id{:s}?param1={:s}¶m2={:s}'
>>> Parser(fmt)(url)
('32434242423423234', '321', '4324342')
가지 적어 시험해 주시면 호스트 here
부적처럼 잘 작동합니다. – Mladen
th에서 꼭 필요한 것은 아니지만 ('\ f ')'와'list (r'\ f)의 차이점에주의하십시오.''[\ f] ''와 같은 문제를 피하기 위해' ')'). – jfs
@ J.F. Sebastian : 제안에 감사드립니다 - 나는 그 변화를 만들었습니다. (우수한 사용자 이름, BTW :)) –