【发布时间】:2013-11-20 21:37:52
【问题描述】:
我一直在寻找一种方法来做到这一点,我只找到了使用字符串的方法,我想知道是否可以使用列表来完成。
#----------------------------
#flesch reading score program
#----------------------------
#----getting file to read----
myfile = open('project2test.txt')
txt = myfile.read()
words = txt.split()
txt = list(txt)
txt.append(' ')
#----global variables----
numWords, numberOfWords, numSentences, numSyllables = 0,0,0,0
punctuation = '.?;:!'
extendedPunctuation = '.?;:!,/<>]}\|)(*&^%$#@'
abc = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
syllables = 'aeiouAEIOU'
numbers = '1234567890'
#----counting functions----
def sentenceEnd(i,numSentences):
if txt[i] in punctuation:
numSentences += 1
return numSentences
def wordEnd(i,numWords):
if txt[i] in abc:
if txt[i+1] == ' ' or txt[i+1] == '\n':
numWords += 1
if txt[i+1] in extendedPunctuation:
numWords += 1
if txt[i+1] in numbers:
numWords += 1
return numWords
def syllableEnd(i,numSyllables):
if txt[i] in syllables:
if txt[i+1] not in syllables:
numSyllables += 1
return numSyllables
#----main loop----
for i in range(len(txt)):
numWords = wordEnd(i, numWords)
numSentences = sentenceEnd(i,numSentences)
numSyllables = syllableEnd(i,numSyllables)
for word in words:
numberOfWords += 1
flesh = 206.835 - 1.015 * (numberOfWords/numSentences) - 84.6 * ((numSyllables)/numberOfWords)
print("The flesch redability of your document is: ", flesh)
print(numSyllables, ' ', numSentences, ' ' , numWords, ' ', numberOfWords)
现在我必须定义一切。 我基本上想知道如果不是 sat puntuation =, abs = ... list[i].ascii == true
【问题讨论】:
-
按位置是指列表索引包含非 ascii 吗?还是?
-
您尝试了哪些方法,但在哪些方面没有奏效?据我所知,如果您将
abc替换为单字符串列表,它仍然可以工作。 -
你能多解释一下你到底想做什么吗?
-
我根本不会那样做(带有
\w字符类的正则表达式会更好)但如果你确实想使用这种方法,请使用内置的string.letters你的abc:docs.python.org/2/library/string.html#string.letters 数字和标点符号有类似的常量。 -
你不必定义任何特殊的东西来使用
string.letters,只需导入它。import string或from string import letters.