0

以下に、次の XML の例を示します。

                    <a:p>
                        <a:r>
                            <a:rPr lang="en-US" dirty="0"/>
                            <a:t>Go for a </a:t>
                        </a:r>
                        <a:r>
                            <a:rPr lang="en-US" dirty="0" smtClean="0"/>
                            <a:t>test-drive</a:t>
                        </a:r>
                        <a:r>
                            <a:rPr lang="de-DE" dirty="0" smtClean="0">
                                <a:hlinkClick r:id="rId11"/>
                            </a:rPr>
                            <a:t>http</a:t>
                        </a:r>
                        <a:r>
                            <a:rPr lang="de-DE" dirty="0">
                                <a:hlinkClick r:id="rId11"/>
                            </a:rPr>
                            <a:t>://</a:t>
                        </a:r>
                        <a:r>
                            <a:rPr lang="de-DE" dirty="0" smtClean="0">
                                <a:hlinkClick r:id="rId11"/>
                            </a:rPr>
                            <a:t>google.com</a:t>
                        </a:r>
                        <a:r>
                            <a:rPr lang="de-DE" dirty="0" smtClean="0"/>
                            <a:t>.</a:t>
                        </a:r>
                    </a:p>

すべてのa:rノードをループしてtext、子なしでノードから抜け出すa:hlinkClick必要があります。たとえば、出力は次のようになります。

Go for a test drive .

リンクは である必要がありますexculdedlink唯一のものを取得するために、Pythonで次のことを行いました。

if d.xpath('./a:r/a:rPr[@dirty="0"]/a:hlinkClick[@r:id]',  namespaces=NAMESPACES) != []:
    e = d.xpath('./a:r/a:rPr/a:hlinkClick/../../a:t/text()',  namespaces=NAMESPACES)
    print ''.join(e)

しかし、今はテキストだけを取得する方法を知りたいと思っています。任意の提案をいただければ幸いです。ありがとう

4

2 に答える 2

1

どうですか

>>> import re
>>> telems = d.xpath('.//a:r[not(.//a:hlinkClick)]//a:t/text()', namespaces=NAMESPACES)
>>> joined_text = ''.join(telems).strip()
>>> re.sub('\s+', ' ', joined_text)
'Go for a test-drive.'
于 2013-10-04T13:47:43.120 に答える
0

xmlObject がある場合は、オブジェクトを反復処理して、各タグのテキストと属性を取得できます。

Element Tree を使用しています。こちらの python ドキュメントを参照してください。

于 2013-10-03T13:49:02.087 に答える