положить предложения в список - Python - PullRequest
0 голосов
/ 24 февраля 2011

Я понимаю, что nltk может разбивать предложения и распечатывать их, используя следующий код. но как поместить предложения в список вместо вывода на экран?

import nltk.data
from nltk.tokenize import sent_tokenize
import os, sys, re, glob
cwd = './extract_en' #os.getcwd()
for infile in glob.glob(os.path.join(cwd, 'fileX.txt')):
    (PATH, FILENAME) = os.path.split(infile)
    read = open(infile)
    for line in read:
        sent_tokenize(line)

sent_tokenize (строка) распечатывает его. как поместить его в список?

Ответы [ 2 ]

2 голосов
/ 24 февраля 2011

Вот упрощенная версия, которую я использовал для проверки кода:

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())
1 голос
/ 24 февраля 2011

Вы не должны использовать ключевое слово (чтение) для именования объекта вашей программы.

.

Если вы хотите добавить в список, у вас должен быть список:

reclist = []
for line in f:
    reclist.append(line)

или со списком

reclist = [ line for line in f ]

или с использованием инструментов Python

reclist = f.readlines()

или я не понял, что вы хотите

РЕДАКТИРОВАТЬ:

Ну, учитывая замечание Йохена Ритцеля, вы хотите

f = open(infile)
reclist = sent_tokenise(f.read())
...