Я пытаюсь найти количество уникальных вхождений некоторого текста в одном теге xml и отобразить его в одном из столбцов в CSV-файле.
Мой Xml файл выглядит примерно так :
<start>
<tag1> ..... </tag1>
<main>
<number> 685 </number>
<text> hi..some text...[]para01 |...</text>
</main>
<main>
<number> 67 </number>
<text> hi..some text...[]para01 |..</text>
</main>
<main>
<number> 75 </number>
<text> hi..some text...[]para02 |...</text>
</main>
<main> .......
Я хочу узнать, сколько раз каждый текст после скобки встречается (внутри каждого основного тега), пример para01 виден 2 раза, para02 1 раз и т. Д.
То, что я пробовал:
tree = ET.parse(file)
root=tree.getroot()
with open(csvfile, 'a') as f:
writer=csv.writer(f, delimiter=', ')
writer.writerow(['number', 'para', 'count'])
lis = []
for child in root.findall('main'):
num = child.find('number').text
para = re.findall(r"\[] (.*?)\| ", child.find('text').text)
lis.append("" .join(para))
res = dict((i, lis.count(i)) for i in lis)
for key, value in res.items():
r.append([key, value])
r = [num, para, [key, value])
writer.writerow(r)
Однако я, похоже, получаю результат, сильно отличающийся от того, что я хочу:
number para. Count
685 para01 para01:2
67 para01 para01:2
75 para02 para02:1
Что я могу изменить в своем коде, чтобы получить приведенный выше вывод?