Я написал следующий код для подсчета количества предложений, слов и символов во входном файле sample.txt, который содержит абзац текста.Он отлично работает, давая количество предложений и слов, но не дает точное и правильное количество символов (без пробелов и знаков препинания)
lines,blanklines,sentences,words=0,0,0,0
num_chars=0</p>
<p>print '-'*50</p>
<p>try:
filename = 'sample.txt'
textf = open(filename,'r')c
except IOError:
print 'cannot open file %s for reading' % filename
import sys
sys.exit(0)</p>
<p>for line in textf:
print line
lines += 1
if line.startswith('\n'):
blanklines += 1
else:</p>
<pre><code> sentences += line.count('.')+ line.count ('!')+ line.count('?')
tempwords = line.split(None)
print tempwords
words += len(tempwords)
textf.close ()
print '-' * 50 напечатать "Lines:", строки напечатать "пустые строки:", пустые строки напечатать "предложения:", предложения напечатать "words:", слова
import nltk import nltk.dataимпортировать nltk.tokenize
с открытым ('sample.txt', 'r') как f: для строки в f: num_chars + = len (строка)
num_chars = num_chars - (слова+1)
pcount = 0 из nltk.tokenize импортировать TreebankWordTokenizer с открытым ('sample.txt', 'r') как f1: для строки в f1: #tokenised_words = nltk.tokenize.word_tokenize (line)tokenizer = TreebankWordTokenizer () tokenised_words = tokenizer.tokenize (строка) для w в tokenised_words: if ((w == '.') | (w == ';') | (w == '!') | (w == '?')): pcount = pcount + 1 печать "pcount:", pcount num_chars = num_chars - pcount печать "chars:", num_chars
pcount - это числознаки препинания.Могут ли некоторые предложить изменения, которые мне нужно сделать, чтобы узнать точное количество символов без пробелов и знаков препинания?