Вот упрощенная версия, которую я использовал для проверки кода:
import nltk.data
from nltk.tokenize import sent_tokenize
import sys
infile = open(sys.argv[1])
slist = []
for line in infile:
slist.append(sent_tokenize(line))
print slist
infile.close()
Когда вызывается так, он печатает следующее:
me@mine:~/src/ $ python nltkplay.py nltkplay.py
[['import nltk.data\n'], ['from nltk.tokenize import sent_tokenize\n'], ['import sys\n'], ['infile = open(sys.argv[1])\n'], ['slist = []\n'], ['for line in infile:\n'], [' slist.append(sent_tokenize(line))\n'], ['print slist\n'], ['\n']]
Когда вы делаете что-то подобное,Понимание списков является более кратким, а ИМО более приятным для чтения:
slist = [sent_tokenize(line) for line in infile]
Для пояснения, приведенное выше возвращает список списков предложений, по одному списку предложений для каждой строки.Если вам нужен плоский список предложений, сделайте это вместо этого, как подсказывает eyquem:
slist = sent_tokenize(infile.read())