2011-10-11 2 views
3

나는 파이썬에 아주 익숙하다. 나는 여기서 질문해야한다고 결심하기 전에 가능한 한 많은 것을 연구했다. 그래서 여기에 문제가 있습니다 :파이썬에서의 RegEx, 내가 뭘 잘못하고 있는지 확실하지 않다.

내 RegEx에 내가 뭘 잘못하고 있는지 잘 모르겠습니다. re.findall()을 사용하고 싶었 기 때문에 웹 페이지에 전화 번호를 찾을 수있는 작은 스크립트를 작성할 것이라고 생각했습니다. 지금 당장 가지고있는 코드는 다음과 같습니다.

import re, urllib 
    inurl = raw_input("Input a URL: ") 
    web = urllib.urlopen(inurl) 
    web.readlines() 

    numbers = re.findall("/\d{3}.\d{3}.\d{4}/g", web) 
    for itm in numbers 
     print itm 

무슨 일이 일어나는지 확실하지 않습니다. 내가 "기대하는 문자열이나 버퍼"라는 오류 메시지가 나타나는 줄은

numbers = re.findall(".....", web) 

미리 감사드립니다.

+2

와 g를 – Joe

답변

3

/\d{3}.\d{3}.\d{4}/g - /../ 부분은 Ruby와 같은 다른 언어에서 정규 표현식을 식별하고 g는 플래그이며 Python에도 적용 할 수 없습니다. 그것을 제거하고 사용 해보십시오. \d{3}.\d{3}.\d{4}

또한 웹 에서뿐만 아니라 findall에서도 출력/응답을 사용하고 싶다고 생각합니다. 이것이 expected string or buffer입니다. 당신은 또한 단지 web.readlines()

그래서 이런 식으로 뭔가있을 것입니다 수행 할 수 있습니다 무엇을합니까 줄 제거해야합니다 : 난 당신이 슬래시를 삭제할 필요가 있다고 생각

numbers = re.findall("\d{3}.\d{3}.\d{4}", web.read()) 
+0

을 방금 내 문제를 해결 했어. 정말 고맙습니다. 나는 정규식 생성기를 사용했다. 나는 루비가 거기에 있다는 것을 몰랐다. 고맙습니다. 나는 질문이있다. 나는 readlines()가 모든 라인을 읽고 목록에 넣을 것이라고 생각 했었습니다 ... 아니면 doc.python.org에서 읽지 못했습니까? lol 설명서를 다시 읽으 시겠습니다. 다시 한 번 감사드립니다! – inoobdotcom

0
"\d{3}.\d{3}.\d{4}" write raw string r"\d{3}.\d{3}.\d{4}" 
관련 문제