嵌套循环结构内"list index out of range"错误,但不在其外部



这是我第一个问题。

我正试图从文本语料库中提取单词形式,并将它们写入文本文件。

语料库如下所示:

<corpus>
<text id="t0">
<s>
Computerlinguistik  NN  NOUN    Computerlinguistik
</s>
<s>
In  APPR    ADP In
der ART DET der
Computerlinguistik  NN  NOUN    Computerlinguistik
_SP SPACE     
oder    KON CCONJ   oder
linguistischen  ADJA    ADJ linguistischen
Datenverarbeitung   NN  NOUN    Datenverarbeitung
...
</s>
...

  1. 句子使用标记& lt; s>……& lt;/s>
  2. 单词
  3. 一个句子的换行符
  4. 每个<<li> strong>行具有字形式(以及一些tab分隔的注释,例如,词性标记)

我的方法我的方法是:

  1. 创建列表所有没有xml标记的句子
  2. 拆分每个句子在'n'
  3. 拆分
  4. 写入第一个元素在那个"行列表"中转换成。txt文件

然而,当试图访问循环中的第一个元素时,我得到一个list index out of range错误:

# getting the xml-like content:
soupWiki = BeautifulSoup(open('MeinWikiKorpus.vrt'))
# getting a list of all sentences (< s >...< /s >) without xml tags:
wikiSentences = [sentence.get_text() for sentence in soupWiki.find_all('s')]
for s in wikiSentences:
# splitting each sentence by 'n'
for line in (s.splitlines()):
# splitting each line into it's elements (word form, POS-Tag, ...)
lElements = line.split()
print(lElements[0])

然而,当我尝试访问所有循环外的第一个元素时,它成功了。

我相信这只是一个愚蠢的错误,写这个问题我可能已经想出来了,但不知怎么的,我被困在这里了。

提前感谢!

你正在执行:

lElements = line.split()

这里发生了一些事情。

  1. 有些行是空白的,所以.split()找到零元素。
  2. 我们反复赋值给lElements——它将在循环完成后保留最终值。
  3. 最后一行非空。

在取消引用第0个元素之前你需要和警卫确认一下。

:if len(lElements) > 0:

简洁:

if lElements:
print(lElements[0])

相关内容

  • 没有找到相关文章

最新更新