2012-05-13 7 views
2

다음 코드가 있습니다.BeautifulSoup 출력 뒤에 공백이 있습니다. .strip()

html = urllib2.urlopen(
    'https://ebet.tab.co.nz/results/CHCG-reslt05070400.html').read() 


soup = BeautifulSoup(html) 
data = soup.findAll('div', {'class' : 'header bold'}) 
match = re.search('R', data[0].text) 
race_title = data[0].text[(match.start()):] 
race_title = str(race_title.strip(' \t\n\r')) 
print race_title 

내가 콘솔에서 화면에 수 출력은 아래 내가 스트립 SPRINT와 C0하지만 사이에 공간의 모든 유형을 제거 것이라고 생각

Race 1 PEDIGREE ADVANCE SPRINT 
       C0 
       295 m 

그래서 내가 원하는 분명히 내가 뭔가를 놓친 거지입니다 이 결과를 이해하는 데 도움이됩니다. bs4가 유니 코드 등으로 문자열을 출력했기 때문입니까?

+0

모든 공백을 제거 하시겠습니까? – WeaselFox

+0

"Race 1 PEDIGREE ADVANCE SPRINT C0 295 m" –

+0

형식의 출력 문자열이 필요하므로 줄 바꿈을 제거 하시겠습니까? 'race_title.replace ("\ n", "")'을 사용하십시오. 이 모든 정보에 대한 문서를 읽으십시오. http://docs.python.org/library/stdtypes.html – WeaselFox

답변

2

strip()은 앞뒤 문자 만 제거합니다. 사용할 줄 바꿈을 제거하려는 경우 replace("\n","")

+0

아, 고맙지 만, 일부 단어 사이에 탭과 개행 문자 및 공백이 있다고 생각합니다. 3 .replace() 문을 사용하거나 더 좋은 방법이 있습니까? –

+0

정규식을 사용하여 다양한 문자를 바꿀 수 있습니다. 're.sub ('345', '999', '123456') '129996' – WeaselFox

2

일반적으로 STRIP은 문자열 시작 부분과 끝 부분의 공백을 제거합니다. STR_REPLACE를 사용하여 공간을 ""로 바꿉니다.

strip (s [, chars]) 선행 문자와 후행 문자가 제거 된 문자열의 복사본을 반환합니다. chars가 생략되거나 None 인 경우 공백 문자 이 제거됩니다. None을 지정하지 않으면 chars는 문자열이어야합니다. 문자열의 문자가 양 끝에서 제거되고이 메서드가 호출됩니다. 2.2.3 버전에서 변경 : chars 매개 변수가 추가되었습니다. chars 매개 변수는 이전 2.2 버전에서는 전달할 수 없습니다.

관련 문제