"list index out of range" 嵌套循环结构内有错误,但外部没有
"list index out of range" error within nested loop structure but not outside of it
这是我在这里的第一个问题。
我试图从文本语料库中仅提取单词形式并将它们写入文本文件。
语料库 看起来像这样:
<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>
...
所以
- 一个句子标有
...
- 一个句子的 个单词 被分成换行符
- 每个行都有单词形式(和一些制表符分隔的注释,例如词性标记)
我的做法
我的方法是:
- Making a list with all the sentences without xml tags
- Split each sentence of that list at '\n'
- Split each line at any whit space character
- Write the first element of that "line list" into a .txt file
问题
但是,我在尝试访问循环中的第一个元素时遇到 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()
这里发生了一些事情。
- 有些行是空白的,因此
.split()
找到零个元素。
- 我们反复赋值给 lElements -- 循环完成后它会保留最终值。
- 最后一行非空。
取消引用第 0 个元素之前
你会想和警卫核实一下。
详细地说:if len(lElements) > 0:
简明扼要:
if lElements:
print(lElements[0])
这是我在这里的第一个问题。
我试图从文本语料库中仅提取单词形式并将它们写入文本文件。
语料库 看起来像这样:
<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>
...
所以
- 一个句子标有
... - 一个句子的 个单词 被分成换行符
- 每个行都有单词形式(和一些制表符分隔的注释,例如词性标记)
我的做法
我的方法是:
- Making a list with all the sentences without xml tags
- Split each sentence of that list at '\n'
- Split each line at any whit space character
- Write the first element of that "line list" into a .txt file
问题
但是,我在尝试访问循环中的第一个元素时遇到 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()
这里发生了一些事情。
- 有些行是空白的,因此
.split()
找到零个元素。 - 我们反复赋值给 lElements -- 循环完成后它会保留最终值。
- 最后一行非空。
取消引用第 0 个元素之前 你会想和警卫核实一下。
详细地说:if len(lElements) > 0:
简明扼要:
if lElements:
print(lElements[0])