0

可能重复:
对 .xml 文件中 <P> 内的句子进行编号?

我刚开始编程,所以这个问题很简单,除了我。我有一个 .xml 文件,其中包含如下内容:

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

现在我用 BeautifulSoup 编写了一个脚本来附加每个以字符串结尾的段落,所以它看起来像:

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

在仅包含 1 个句子的 < p > 中,这就是我想要做的。但是如果一个 <p> 包含的句子多于 I 句,我想将 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:
    for n, x in enumerate(sentences):
        sentencenumber = n + 1
于 2012-09-30T12:04:04.297 回答
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.string.replace_with 而不是 tag.append:

    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 回答