smile0908 幼苗
共回答了19个问题采纳率:84.2% 举报
1年前 追问
text = ['James Fennimore Coopern', 'Peter, Paul and Maryn']
import re
def avg_word_length(text):
word_count=0 #单词计数
all_word_len=0 #单词总长度
for line in text:
for word in re.split('W+',line): #使用正则分词,W+是非单词符号的意思
if word:#过滤空字符
all_word_len+=len(word)
word_count+=1
return all_word_len/float(word_count)
print(avg_word_length(text))
# 5.14285714286
这是正则的。使用python2.7,精度不一样。
下面是一种凑合的方法,当然,没有用正则的通用性好。
def avg_word_length(text):
word_count=0 #单词总数
all_word_len=0 #单词的字母总长度
last=' ' #存储上一个字符
for line in text:
for char in line:
if char in ' ,.n':
if not(last in ' ,.n'):
word_count+=1 #如果上一个字母不是分隔符,那么单词计数加1。为了处理连续的分隔符。
#这种计数的前提是结尾有一个换行符,不然会少计算一个单词数
else:
all_word_len+=1
last=char
return all_word_len/float(word_count)
1年前4个回答
1年前1个回答
你能帮帮他们吗