質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

XPath(XML Path)

XML Path Language (XPath; XMLパス言語)は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文の事をいいます。XPathはXMLとは別の構文を使用します。XMLドキュメントの抽象、論理ストラクチャ上で動作します。

XMLパーサ

XML文書のテキストデータだけを抜き出して、アプリケーションソフトが利用しやすい形式に変換させるソフトウェアをXMLパーサと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2507閲覧

xml.etree.ElementTreeで任意のテキストを取得したい

fkzwlab

総合スコア1

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

XPath(XML Path)

XML Path Language (XPath; XMLパス言語)は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文の事をいいます。XPathはXMLとは別の構文を使用します。XMLドキュメントの抽象、論理ストラクチャ上で動作します。

XMLパーサ

XML文書のテキストデータだけを抜き出して、アプリケーションソフトが利用しやすい形式に変換させるソフトウェアをXMLパーサと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/09/20 14:38

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

xml.etree.ElementTreeをつかって下記の様なXMLからデータを抜き出したいと思い処理を書いているのですが、
「【課題】ジカルボン酸の製造法を提供する。」しか抜き取れません。
「【解決手段】」以降のpタグ要素も取りたいのですが、どのようにしたらよいかわからず、質問させていただきました。
python 3.8.3です。よろしくお願いいたします。

<abstract> <p num="">【課題】ジカルボン酸の製造法を提供する。<br/>【解決手段】yeeA遺伝子、ynfM遺伝子、yjjP遺伝子、およびyjjB遺伝子から選択される1またはそれ以上の遺伝子の発現が増大するように改変されたジカルボン酸生産能を有する細菌を培地で培養し、該培地よりジカルボン酸を採取することにより、ジカルボン酸を製造する。<br/>【選択図】なし</p> </abstract>
エラーメッセージなし

該当のソースコード

Python

1from xml.etree.ElementTree import * 2(省略) 3elem.findtext('.//abstract/p')

試したこと

elem.findtext('.//abstract/{*}p')
elem.findtext('.//abstract/p[@num=""]/br')

等試してみました。

補足情報(FW/ツールのバージョンなど)

python 3.8.3

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ElementTreeにはitertext()という直下のテキスト要素のイテレーターを返すメソッドが用意されており、
Pythonドキュメントでもそちらが案内されています。

ドキュメントのURL

以下のように使えるみたいです。

python

1import xml.etree.ElementTree as ET 2 3tree = ET.parse('data.xml') 4root = tree.getroot() 5p = root.find("./p") 6 7print(list(p.itertext())) 8# listを用いて他のタグで区切られたテキストをリストに出来る 9# ['【課題】ジカルボン酸の製造法を提供する。', '【解決手段】yeeA遺伝子、ynfM遺伝子、yjjP遺伝子、およびyjjB遺伝子から選択される1またはそれ以上の遺伝子の発現が増大するように改変されたジカルボン酸生産能を有する細菌を培地で培養し、該培地よりジカルボン酸を採取することにより、ジカルボン酸を製造する。', '【選択図】なし'] 10 11print("".join(p.itertext())) 12# '【課題】ジカルボン酸の製造法を提供する。【解決手段】yeeA遺伝子、ynfM遺伝子、yjjP遺伝子、およびyjjB遺伝子から選択される1またはそれ以上の遺伝子の発現が増大するように改変されたジカルボン酸生産能を有する細菌を培地で培養し、該培地よりジカルボン酸を採取することにより、ジカルボン酸を製造する。【選択図】なし'

投稿2020/09/20 15:38

attakei

総合スコア2738

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fkzwlab

2020/09/22 13:43

できました!!!ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問