Добрый день,
Я изучаю Python, а также изучаю XML: как таковой, пожалуйста, прости меня за невежество.
У меня есть XML-документ с текстом, для которого я пытаюсьИзвлеките их в одну строку: в конечном итоге я хочу создать CSV-файл с информацией, извлеченной из атрибутов (в виде столбцов) с текстом, и для каждого «чанка» будет создана новая строка во фрейме данных.
Вот пример XML-файла:
<div type="majorSection">
<p>
<tagname ID="xxx.1.1" sID="xxx.1.1.seID.00002" n="1" />
<w lemma="ref:H75">text I want</w>
<w lemma="ref:H40"> more text I want</w>
<w lemma="ref:H83">and</w>
punctuation is on this line without any associated tag.
<tagname eID="xxx.1.1.seID.00002" />
<tagname ID="xxx.1.2" sID="xxx.1.2.seID.00003" n="2" />
<w lemma="ref:H75">second line of text I want</w>
and punctuation is on this line without any associated tag ":"
<w lemma="ref:H8 ref:H14">and again wanted text</w>
with final punctuation line here.
<tagname eID="xxx.1.2.seID.00003" />
Я думаю, что понимаю, как это сделать, если меня заинтересовал полный тег "p" (абзац), но я особенно заинтересован втекст между тегами «tagname», где sID начинает чанк, а eID заканчивает чанк той же строки желаний.
, поэтому для приведенного выше примера я бы хотел, чтобы конечный результат выглядел как
- для текста в первой строке - «текст, я хочу больше текста, который я хочу, и пунктуация в этой строке без какого-либо связанного тега»(это из sID = xxx.1.1.seID.00002)
- для текста второй строки - "вторая строка текста, которую я хочу, и пунктуация в этой строке без какого-либо связанного тега: и снова требуемый текстс последней пунктуацией здесь. "(это из sID = xxx.1.2.seID.00003)
В конечном итоге я хотел бы иметь столбец в конце фрейма данных для идентификации источника, и в этом случае первая запись строки будет иметь «xxx», «1», «1» и вторая запись строки будут иметь «xxx», «1», «2».
, поэтому конец будет иметь четыре столбца: book, chapterNum, textNum, textChar
это то, что у меня пока есть, но я не уверен, как сохранить textChar в одной строке без разрывов строк, и я не уверен, как получить другую информацию из значений атрибута sID, которые я хочу, и поместить все этов фрейм данных.
for i in soup.find_all('div'):
if i.get('type')=='majorSection':
for j in i.find_all('p'):
for tag in j.find_all('w'):
textChar = tag.text + tag.next_sibling
print(textChar)
Я смотрел на это решение безрезультатно: Как получить весь текст между двумя указанными тегами, используя BeautifulSoup?
Спасибоза ваше терпение со мной.Мне нужно многому научиться в области интеллектуального анализа текста с помощью Python, и я очень рад это сделать, но после этих двух последних дней я зашел в тупик.