[python] 문자열을 딕셔너리로 변환

Que)

— python Beautifulsoup을 활용하여 웹크롤링

— style 속성 값을 가져오려고 한다.

— style 속성 값을 딕셔너리로 변환한 후 key값이 ‘left’인 value 값을 추출

Final Code

from bs4 import BeautifulSoup

# 예시 HTML 코드
html = """
<div style="position:absolute; top:50px; left:100px; color:red;">Hello World</div>
"""

# HTML 파싱
soup = BeautifulSoup(html, 'html.parser')

# style 속성값 가져오기
style = soup.find('div')['style']

# style 속성값을 딕셔너리 형태로 변환
keys = []
values = []
style_split = style.split("; ")
print(style_split)

for i in range(0,len(style_split)-1):
		pair = style_split[i].split(":")
    keys.append(pair[0])
    values.append(pair[1])

print(keys)
print(values)

style_dict = dict(zip(keys,values))
print(style_dict)

# left 속성값 가져오기
left_value = style_dict['left']

# 결과 출력
print(left_value) # 100px

style 속성 값을 딕셔너리 형태로 변환

ex)
style = 'position:absolute; top:50px; left:100px; color:red;'

결과
{'position': 'absolute', 'top': '50px', 'left': '100px'}

1. 문자열로부터 key, value 리스트 형태로 분리

style = 'position:absolute; top:50px; left:100px; color:red;'
style_split = style.split('; ') # 공백제거를 위해 '; '으로 split 진행 (list형에서는 strip()함수가 적용 x)

keys = []
values = []
for i in range(0,len(style_split)-1):
    pair = style_split[i].split(':') # list형
    keys.append(pair[0])
    values.append(pair[1])

print(keys)
print(values)

['position', ' top', ' left', ' color'] ['absolute', '50px', '100px', 'red']

2. zip() 내장함수를 활용하여 딕셔너리 형태로 변환

style_dict = dict(zip(keys,values))
print(style_dict)

{'position': 'absolute', ' top': '50px', ' left': '100px', ' color': 'red'}

3. key가 ‘left’인 value값 출력

print(style_dict['left'])

100px