0

Python 2.7でテキストファイルを読んでいます。私がやろうとしているのは、テキストファイルの各文の単語数を1D配列に入力することです。これが私が持っているものです:

f = open(file_txt, 'r')

sen_prog = []

for line in f:
    sents = line.split('.')
    sen_prog.append(sents)

sen_p = []

for a in sen_prog:
    for b in a:
        sen_p.append(b)

sen_p = numpy.array(sen_p)
sen_p = sen_p[sen_p!='-']

sen_d = []


for c in sen_p:
    sen_d.append([len(x.split()) for x in sen_p])

sen_d = numpy.array(sen_d)
sen_d = numpy.ravel(sen_d)

print sen_prog, sen_d

問題は、配列が作成されているのに、間違った文の数が表示されることです。私のテキストファイルには55の文があります(各文はピリオド'。'で区切られています)が、間違った数字が表示されています...助けが必要です!

4

3 に答える 3

1

ファイルを1行ずつ読み込んでいます。ファイルがそのようであると仮定すると、複数行にまたがる文では、間違ったカウントを取得する可能性があります。

This is line 1. This 
is line 2. This is 
line 3.

sen_progの値は次のとおりです。

[ "This is line 1", "This", "is line 2", "This is", "line 3", ""]

これはおそらくあなたが探しているものではありません。

あなたがしたいかもしれません:

sen_prog = " ".join(f.readlines()).split(".")

つまり、sen_progは

[ "This is line 1", "This is line 2", "This is line 3", ""]

上記の入力の場合。

于 2013-03-03T07:05:52.860 に答える
1

これにより、文の長さのリストが作成されます。

with open('path/to/file', 'r') as f:
    l = [len(x.split()) for x in f.read().split('.')]
于 2013-03-03T08:13:25.607 に答える
0

これはそれを行う必要があり、1行の複数の文も考慮します。

sen_prog = []
sentence = ''

for line in f:
    parts = line.split('.')
    if len(parts) > 1:
        sentence += parts[0]
        sen_prog.append(sentence)
        if len(parts) > 2:
            sen_prog.append(parts[1:-1])
        sentence = parts[-1]
于 2013-03-03T07:50:31.870 に答える