[파이썬] 텍스트 공백지우기, 범위 출력
지니차트에서 랭킹, 음악 타이틀, 가수명 을 크롤링해서 출력하려는 예제
#body-content > div.newest-list ... > tr 까지가 공통이구 이후가 분기점이되어서 나뉘게 됨.
긁어온 데이터는 'allMusic'에 담고 for문을 돌리려고함. 하지만 여기서 문제가 발생.
랭크 숫자만 나오는게 아니라 랭크가 몇단계 상승,하락했다는 문구도 같이 나오게됨. 여기서 이용할 수 있는 것이 [num:num] 이다. 범위를 정해서 글자를 긁어올 수 있는 기능이다. 첫번째 num은 시작index이고 두번째 num은 끝나는 index이다. 랭크가 99위까지 있어서 나는 두글자만 가져오면 되어서 [0:2]로 하였다. 결과는
랭크만 나오는 것은 성공하였으나 1자릿수는 뭔가 공백이 있는지 간격이 넓다. 여기서 공백을 없애줄 수 있는게
strip() 를 이용하면 특정 문자 또는 공백을 제거할 수 있다.
strip([chars]) : 인자로 전달된 문자를 String의 왼쪽과 오른쪽에서 제거함. 아무것도안쓰면 양쪽으로 공백제거
lstrip([chars]) : 인자로 전달된 문자를 String 왼쪽에서 제거.
rstrip([chars]) : 인자로 전달된 문자를 String 오른쪽에서 제거.
출처 : https://codechacha.com/ko/python-string-strip/
Python - String strip(), rstrip(), lstrip() 사용 방법 및 예제
Python에서 strip() 함수를 이용하면 문자열의 쓸모 없는 부분을 자를 수 있습니다. Python은 lstrip(), rstrip(), strip()을 제공합니다. Java 등의 다른 언어들도 strip()을 제공하며, 기능은 모두 비슷합니다.
codechacha.com
아무튼 실행시켜보니 공백이 사라졌음.
다음은 음악 타이틀을 출력해보는데 타이틀도 깔끔하게 긁어오지 않았음.
타이틀도 공백을 제거해줌.
잘 나오는듯했는데 문제가 발생함. [Peaches]라는 곳은 19금 마크가 붙어서 19금 텍스트까지 가져오고 공백도 생겼음. 이 문제는 나만생긴건지 강의에서는 따로 이부분 언급은 없어서 일단 스스로 해결해보았음.
일단 lstrip() 을 이용해서 '19금'이라는 단어는 제거하도록 함.
19금 단어는 사라졌지만 공백은 여전히 존재함. 그래서 추가로 .strip() 을 이용해서 공백을 제거함.
일단 저렇게 하니 원하는대로 나오기는 했는데 저게 과연 최선이었는지 찝찝한 마음은 어쩔 수 없음. 공부하다가 더 좋은 방법이 생각나면 수정을 해봐야겠다.