2012-02-20 3 views
1

나는이 코드가 그리 좋지는 않다는 것을 알고 있으며, 쉬운 방법이 있다고 확신한다.하지만 왜 파이썬이 내가 요청한 문자를 제거하지 않는지에 대해 더 염려한다.파이썬에서 문자 스트립 핑하기

import urllib, sgmllib 


zip_code = raw_input('Give me a zip code> ') 
url = 'http://www.uszip.com/zip/' + zip_code 
print url 

conn = urllib.urlopen('http://www.uszip.com/zip/' + zip_code) 

i = 0 
while i < 1000: 
    for line in conn.fp: 
      if i == 1: 
       print line[7:-10] 
       i += 1 
      elif i == 344: 
       line1 = line.strip() 
       line2 = line1.strip('<td>') #its not stripping the characters 
       print line2[17:-60] 
       i += 1 
      else: 
      i += 1 
+0

지난 한 시간 동안 문서를 읽지 못했습니다. 당신이 가르쳐 줄 수있는 도움이되는 문서를 가지고 있습니까? 아니면 단순히 허세 부리고 있습니까? – tw0fifths

+3

[** 앞뒤 문자 **가 제거 된 문자열 사본을 반환합니다. * chars * 인수는 제거 할 문자 집합 **을 지정하는 문자열입니다.] (http : // docs. python.org/library/stdtypes.html#str.strip) (강조 광산) –

+0

[답변 수락] (http://meta.stackexchange.com/a/5235/176476) –

답변

4

당신이 그것을 호출하는 방법, 그것은 하나라도 <, >, td 문자의 발생 및 only at the beginning or end of the string 제거해야합니다 : 당신은 문자열 <td>의 모든 발생을 제거하려면

>>> '<p>some test</p>'.strip('<td>') 
'p>some test</p' 

를 사용 replace : 당신이 입력 위생의 어떤 종류의 것을 사용하려는 경우

>>> '<td>some test</td>'.replace('<td>', '') 
'some test</td>' 

주, 쉽게 circumvente을 할 수 있다는 D는 :

>>> '<td<td>>some test</td>'.replace('<td>', '') 
'<td>some test</td>' 

이 어쩌면 오히려 BeautifulSoup 같은 라이브러리를 구문 분석 HTML이나 XML 파서 등을 사용하려면, 그들은 자신의 HTML 구문 분석 코드를 작성하려고하면 사람들이 일반적으로 나사되는 방법을 여러 가지 방법 중 하나입니다 lxml.

3
  line2 = line1.strip('<td>') #its not stripping the characters 

그것은 문자열 <td>을 제거하지 않고는, 오히려 문자열의 문자를 제거합니다. 따라서 문자열의 처음과 끝에 < 및> 및 t와 d를 제거합니다.

그러나 일반적으로 웹 페이지에서 데이터를 추출하고 추출하는 것은 좋지 않습니다. 더 나은 접근을 위해 BeautifulSoup을 살펴보십시오.

+1

만 허용하십시오. –

+0

@NiklasB. 대답에 추가했습니다. –

0

매개 변수 :

여기

매개 변수의 세부 사항입니다 : 그것은 단지 시작 또는 문자열의 종료 할 필요가 같은

chars: characters to be removed from beginning or end of the string. 

보인다. 그렇지 않으면 정규식을 사용하는 것이 좋습니다.

+0

자신의 html/xml 파서를 굴리는 대신에, 그는 다른 답변에서 언급 한 lxml과 같은 사용 가능한 라이브러리 중 하나를 사용해야합니다. – gfortune

+0

@ gfortune, 전적으로 동의합니다. 저는 그에게 스트립 기능의 동작을 이해하도록 돕기 위해 노력했습니다. 그 맥락에서 권장 사항은 당신이 당면한 가장 큰 문제를 고려해야한다는 것입니다. – macduff