python 콤마로 구분하는법
본문
안녕하세요.
python select나 다른 방법이 있으면 아래와 같은 소스가 있을시
로맨스,일상,학원,액션
콤마구분로 구분하여 tag를 만들려고 합니다.
어떻게 하면 될까요?
감사합니다.
<p class="text-muted" style="font-size:13px;">
<span class="text-muted" style="">장르</span>
<span class="badge badge-light" style="font-size:100%;">로맨스 </span>
<span class="badge badge-light" style="font-size:100%;">일상 </span>
<span class="badge badge-light" style="font-size:100%;">학원 </span>
<span class="badge badge-light" style="font-size:100%;">액션 </span>
<span class="badge badge-light" style="font-size:100%;"></span>
</p>
답변 4
예를들어 다음과 같이 하시면 가능하지 않을까 합니다.
from bs4 import BeautifulSoup
html_code = '''
<p class="text-muted" style="font-size:13px;">
<span class="text-muted" style="">장르</span>
<span class="badge badge-light" style="font-size:100%;">로맨스 </span>
<span class="badge badge-light" style="font-size:100%;">일상 </span>
<span class="badge badge-light" style="font-size:100%;">학원 </span>
<span class="badge badge-light" style="font-size:100%;">액션 </span>
<span class="badge badge-light" style="font-size:100%;"></span>
</p>
'''
soup = BeautifulSoup(html_code, 'html.parser')
# 'badge-light' 클래스를 가진 span 태그들을 찾아서 텍스트를 추출
genres_span = soup.find_all('span', class_='badge-light')
genres = [span.get_text(strip=True) for span in genres_span]
# 리스트를 쉼표로 구분된 문자열로 변환
result = ','.join(genres)
print(result)
안녕하세요.
아래의 내용을 참고해 보시겠어요?
genres = "로맨스,일상,학원,액션"
# 장르를 콤마로 분리
genre_list = genres.split(',')
# HTML 태그 생성
html_tags = '<p class="text-muted" style="font-size:13px;">\n' \
' <span class="text-muted" style="">장르</span> \n'
for genre in genre_list:
html_tags += f' <span class="badge badge-light" style="font-size:100%;">{genre} </span>\n'
html_tags += ' <span class="badge badge-light" style="font-size:100%;"></span> \n' \
'</p>'
print(html_tags)
import re
strs = """
<p class="text-muted" style="font-size:13px;">
<span class="text-muted" style="">장르</span>
<span class="badge badge-light" style="font-size:100%;">로맨스 </span>
<span class="badge badge-light" style="font-size:100%;">일상 </span>
<span class="badge badge-light" style="font-size:100%;">학원 </span>
<span class="badge badge-light" style="font-size:100%;">액션 </span>
<span class="badge badge-light" style="font-size:100%;"></span>
</p>
"""
arr = re.findall(r'badge.*?>([^\s<]+)', strs)
arr_tostring = ','.join(arr)
print(arr)
print(arr_tostring)
BeautifulSoup를 사용하여 HTML 코드를 파싱하고 필요한 정보를 추출하는 방식으로 하시면 되지 않을까 합니다.
참고 하셔서 원시는 형식으로 구현을 하시면 될 것 같습니다.
from bs4 import BeautifulSoup
html_code = '''
<p class="text-muted" style="font-size:13px;">
<span class="text-muted" style="">장르</span>
<span class="badge badge-light" style="font-size:100%;">로맨스 </span>
<span class="badge badge-light" style="font-size:100%;">일상 </span>
<span class="badge badge-light" style="font-size:100%;"></span>
</p>
<p class="text-muted mb-3" style="margin-top:-30px;">
<span class="badge badge-light"></span>
<span class="badge badge-light">일상</span>
<span class="badge badge-light"></span>
</p>
<p class="text-muted mb-3" style="margin-top:-30px;">
<span class="badge badge-light"></span>
<span class="badge badge-light">드라마</span>
<span class="badge badge-light"></span>
</p>
'''
soup = BeautifulSoup(html_code, 'html.parser')
# 결과값을 저장할 리스트
result_genres = []
# p 태그 중에서 class가 "text-muted"이고 "mb-3"이 아닌 것들을 선택
genre_paragraphs = soup.find_all('p', class_='text-muted', class_=lambda x: x != 'mb-3')
for paragraph in genre_paragraphs:
# 현재 p 태그의 하위에 있는 span 태그 중에서 class가 "badge-light"인 것들의 텍스트 추출
genres = [span.text.strip() for span in paragraph.find_all('span', class_='badge-light')]
# 결과값 리스트에 추가
result_genres.extend(genres)
# 중복을 제거하고 출력
result_genres = list(set(result_genres))
print(result_genres)