Элемент повторяется при добавлении в BeautifulSoup в цикле - PullRequest
0 голосов
/ 17 марта 2020

Я использую BeautifulSoup для исправления некоторых xml. Данные представляют собой набор предложений со структурой: <sentence><word id="1" form="hello"/><word id="2" form="goodbye"/></sentence> Проблема в том, что токенизация (не находящаяся под моим контролем) пропустила некоторую пунктуацию, и у меня есть несколько слов с формой «привет-до свидания», которые мне нужно разделить и в то же время переделать идентификаторы для всего предложения. Я неправильно понимаю что-то о том, как команда append работает в циклах или вообще о циклах, так как я всегда получаю второй элемент в split, добавляемый дважды, и теряю первый. Проблема указана в комментариях в коде ниже:

from bs4 import BeautifulSoup
oldsents = BeautifulSoup(open('treebank.xml', 'r'))
newsp = BeautifulSoup()
sents = oldsents.find_all('sentence')
for sent in sents:
    sattrs=sent.attrs
    nusent=newsp.new_tag('sentence')
    nusent.attrs=sattrs
    i=0 #for ids
    words=sent.find_all('word')

    for word in words:
        allattrs = word.attrs
        news=word['form'].split("-")
        for newwd in news:
            nuword=newsp.new_tag('word')
            nuword.attrs=allattrs
            nuword['id']=str(i)
            nuword['form']=newwd
            print(nuword) #this works: prints each desired element      
            nusent.append(nuword) #this doesn't work: appends the second element twice
            i=i+1
    newsp.append(nusent)
print(newsp)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...