2010-07-31 2 views
0

을 찾고, 입력을 청소하는 정규 표현식을 사용해야합니다 :개체 PROPERT는 정수 내가처럼 보이는 텍스트가 좋은 스타일

California(2342) 

내 객체가 I가 값 2342을 할당 할 필요 속성이를 .

나는이 일을 수행하는 방법에 대한 의견을 찾고 입력 오류의 잠재성에 대해 지키려고합니다.

c = SomeClass() 

c.count = re.compile(r'(\d*)').groups[0] 

괜찮습니까? 또는 IF 문을 수행하고 입력이 나쁜 경우에 카운트를 0으로 설정해야합니까?

P.S 정규식에 도움이 될 것이라고, 이건 내 첫 번째 심각한 파이썬 스크립트입니다.

답변

2
import re 

pat = re.compile(r'\w+\((\d+)\)') 

s = 'California(2342)' 
match = pat.match(s) 
if match: 
    c.count = match.group(1) 
    print c.count 
    # '2342' 
else: 
    c.count = '0' # or 0 if numeric 

당신은 수 백 대신 문자열 그냥 수정하려면 다음

value = int(match.group(1)) 
+0

내가 수행해야하는 경우 일치와 match.groups()> 0? – Blankman

+0

+1 + nitpick : 형식 일관성을 위해 마지막 줄을'c.count = '0' '으로 변경하십시오. – msw

+0

그룹을 찾을 수 없으면 일치가 없음이 될 수 있으므로 그렇게 할 필요가 없습니다. 정규식은 \ d + 즉 하나 이상의 숫자가 필요하기 때문입니다. 따라서 숫자가 없으면 일치하지 않습니다. \ d * (* 0 * 또는 그 이상)와 같은 옵션 인 경우 테스트해야합니다. – ars

관련 문제