Я использую BeautifulSoup для анализа транскрипта mov ie, который выглядит следующим образом:
<b>A</b>: Look!
<br/>
<b>B</b>: (<i>whispers</i>) Shhh. Be quiet.
<br/>
<b>A</b>: (<i>lowering voice</i>) Sorry.
<br/>
Я попытался получить все диалоги символа А, используя этот код:
page = requests.get(URL)
soup = BeautifulSoup(page.content, 'html.parser')
A_entire_dialogue = []
A_lines = soup.find_all('b', string='A')
for line in A_lines:
dialogue = line.nextSibling
A_entire_dialogue.append(dialogue)
# Code above returns [': Look!', ': (']
Я хочу вывести направления символов внутри тегов i вместе с остальным текстом диалога. Как я могу отредактировать код, чтобы получить результат [': Look!', ': (Понижающий голос) Извините.']?
EDIT: Спасибо за вашу помощь! Все ваши ответы работают для предоставленного фрагмента HTML, но я закончил тем, что написал свой собственный код, который лучше работает для анализа всей записи:
A_entire_dialogue = []
for i in soup.find_all('b', string='A'):
for sib in i.next_siblings:
if sib.name == None:
A_entire_dialogue.append(sib)
elif sib.name == 'i':
A_entire_dialogue.append(sib.get_text())
elif sib.name == 'br':
break
else:
print("Note: new tag not previously encountered.")
break