我试图用一个很长的文字来计算有一个音节的单词数量。这被定义为具有零个或多个辅音,然后是一个或多个元音,后跟零个或多个辅音的单词。 文本已经小写,并分成单个单词串的列表。然而,每当我尝试使用RE来获取计数时,我都会收到错误,因为该对象是一个列表而不是字符串。 我如何在列表中执行此操作?
f = open('pg36.txt')
war = f.read()
warlow = war.lower()
warsplit = warlow.split()
import re
def syllables():
count = len(re.findall('[bcdfghjklmnpqrstvwxyz]*[aeiou]+[bcdfghjklmnpqrstvwxyz]*', warsplit))
return count
print (count)
syllables()
答案 0 :(得分:2)
因为您尝试对列表使用findall函数而不是字符串,因为findall
仅对字符串起作用。所以你可以试试下面的内容。
import re
f = open('file')
war = f.read()
warlow = war.lower()
warsplit = warlow.split()
def syllables():
count = 0
for i in warsplit:
if re.match(r'^[bcdfghjklmnpqrstvwxyz]*[aeiou]+[bcdfghjklmnpqrstvwxyz]*$', i):
count += 1
return count
print syllables()
f.close()
或强>
直接在warlow
变量上使用findall函数。
import re
f = open('file')
war = f.read()
warlow = war.lower()
print len(re.findall(r'(?<!\S)[bcdfghjklmnpqrstvwxyz]*[aeiou]+[bcdfghjklmnpqrstvwxyz]*(?!\S)', warlow))
f.close()
答案 1 :(得分:0)
尝试使用此正则表达式:
srcHeaderRow