0

重複の可能性:
.xml ファイルの <P> 内の文に番号を付けていますか?

私はプログラミングを始めたばかりなので、この問題は私を除いて非常に些細なことです。次のようなコンテンツを含む .xml ファイルがあります。

<p> sentence1. sentence2. sentence3.</p>
<p> sentence1. </p>

ここで、STRING で終わる各段落を追加するスクリプトを BeautifulSoup で作成したので、次のようになります。

<p> sentence1. sentence2. sentence3. STRING</p>
<p> sentence1. STRING </p>

私がやりたいことはたった1つの文を含む<p>で。しかし、 < p > に複数の文が含まれている場合は、各文の終わり + 文番号に STRING を追加したいと考えています。たとえば、上の段落は次のようになります。

<p> sentence1. STRING1 sentence2. STRING2 sentence3. STRING3 </p>

.append メソッドを使用した 1 つの文の作業スクリプトを次に示しますが、複数の文で動作させることができませんでした。どんな助けでも大歓迎です!

soup = BeautifulSoup(xmlfile)
p = norm.findAll("p")

for i in p:
    dotsplit = re.compile(r'\. \w')
    sentences = dotsplit.split(i.text)

    if len(sentences) == 1:
        appendix = "STRING"
        i.append(appendix)
        print i

    if len(sentences) > 1:
        for x in sentences:
            sentencenumber = ???????  
            # Should equal (index of sentences)+1,  meaning sentences[0] = 1
            appendix = sentencenumber + "STRING"
            i.append(appendix)
            print i
4

2 に答える 2

1

私があなたを正しく理解していれば:

if len(sentences) == 1:
    print sentences[0] + 'STRING'
elif len(sentences) > 1:
    isentences = ('%s%s%d' % (s, 'STRING', i) for i, s in enumerate(sentences, 1))
    print ' '.join(isentences)

各文の後に追加する方法がわかりません

BeautifulSoupのドキュメントでは、tag.append の代わりに tag.string.replace_with メソッドを使用する必要があると記載されています。

    isentences = ('%s%s%d' % (s, 'STRING', i) for i, s in enumerate(sentences, 1))
    i.string.replace_with(' '.join(isentences))
于 2012-09-30T12:54:11.660 に答える
1

それは十分なはずです:

if len(sentences) > 1:
    for n, x in enumerate(sentences):
        sentencenumber = n + 1
于 2012-09-30T12:04:04.297 に答える