ElementTree를 사용하여 XML 파일을 구문 분석하려고하고 있으며 일부 지점에서 태그 안에있는 모든 자식 대신 첫 번째 자식 만 가져옵니다. 다음은 XML 구조입니다. -ElementTree를 사용하여 XML 태그에서 모든 자식 가져 오기
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sentences>
<sentence id="2339">
<text>I charge it at night and skip taking the cord with me because of the good battery life.</text>
<aspectTerms>
<aspectTerm term="cord" polarity="neutral" from="41" to="45"/>
<aspectTerm term="battery life" polarity="positive" from="74" to="86"/>
</aspectTerms>
</sentence>
<sentence id="812">
<text>I bought a HP Pavilion DV4-1222nr laptop and have had so many problems with the computer.</text>
</sentence>
<sentence id="1316">
<text>The tech guy then said the service center does not do 1-to-1 exchange and I have to direct my concern to the "sales" team, which is the retail shop which I bought my netbook from.</text>
<aspectTerms>
<aspectTerm term="service center" polarity="negative" from="27" to="41"/>
<aspectTerm term=""sales" team" polarity="negative" from="109" to="121"/>
<aspectTerm term="tech guy" polarity="neutral" from="4" to="12"/>
</aspectTerms>
</sentence>
</sentences>
각 'aspectTerm'태그에서 '용어'를 가져오고 싶습니다.
import xml.etree.ElementTree as ET
tree = ET.parse('Laptops_Train.xml')
root = tree.getroot()
df = pd.DataFrame()
def getAspect(sentences):
reviewList = []
text = sentence.find('text').text
reviewList.append(text)
for aspectTerms in sentence.iter('aspectTerms'):
#for aspectTerm in aspectTerms.iter('aspectTerm'):
aspect = aspectTerms.find('aspectTerm').get('term')
print(aspect)
return aspect
aspectList = []
for sentences in root.iter('sentences'):
for sentence in sentences.iter('sentence'):
aspectList.append(getAspect(sentence))
실제 결과 :
cord
class 'NoneType'
service center
예상 결과 : 사전에
[cord, battery life]
[]
[service center,"sales" team, tech guy]
감사
답장을 보내 주셔서 감사합니다. 귀하의 솔루션을 훨씬 쉽게 있지만 aspectTerm 태그가없는 경우 빈 문자열을 삽입해야합니다. 그러나 의심의 여지 없이이 일을하는 당신의 방법은 훨씬 쉽습니다하지만 내 요구 사항을 충족하지 않습니다 –
이제 나는 이해한다고 생각합니다. 편집을 참조하십시오. –