计算以空格和/或标点符号分隔的字符串中的单词数

时间:2016-01-21 06:37:12

标签: python-3.x

有人可以帮忙吗。 我想创建一个程序,可以计算由空格和/或标点符号分隔的字符串中的单词数。你应该只计算元音和辅音交替出现的单词。一个单词不能有两个连续的元音或辅音。单字母单词不计算在内。忽略文件中不是元音或常量的任何内容。用单个空格替换字母表中没有的任何内容。每个字母的区分大小写并不重要。

要使用的字母 元音 - A E I O U Y. 辅音 - B C D F G H J K L M N P Q R S T V W X Z

输入: 一个字符串,例如"你好,有一个伟大的新世界"

输出: 在上面的输入字符串中找到的所需单词的数量。例如1

样品:

"欢迎来到Radix !!!" == 2(到基数)

"每个人,谢谢你试试这个。" == 2(每个人)

"你好,有一个伟大的新世界" == 1(新)

"玛丽有,一,小,羊肉" == 2(玛丽)

2 个答案:

答案 0 :(得分:0)

<body ng-controller="mainCtrl as MC">
<div>
    <div ng-repeat="(item,value) in MC.items">
        {{item}} <input type="text" ng-model="MC.items[item]"/>
    </div>
</div>
<button ng-click="MC.submitMe()">Save</button>

Change your ng-model as above

这将扫描文件,每行找到有效的单词并打印出符合条件的单词数。您可以将import string,re VOWELS=[x.lower() for x in "A E I O U Y".split(" ")] CONSONANTS = [x.lower() for x in "B C D F G H J K L M N P Q R S T V W X Z".split(" ") ] FILE_PATH = 'sentences.txt' PUNCT = '[ %s]'% string.punctuation #[ !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~] def isAlt(word): #True if word is valid word=word.lower() #Non-case-sensitive for x in range(len(word)-1): if not (word[x] in VOWELS and word[x+1] in CONSONANTS)and not(word[x+1] in VOWELS and word[x] in CONSONANTS): #Sorry about that condition, I can probably return that whole line return False return True for line in open(FILE_PATH,'r'): out=re.split(PUNCT,line.strip()) out=[x for x in out if x and len(x)>1 and isAlt(x)] print(len(out)) 更改为len(out)列表而不是数字。

答案 1 :(得分:0)

这是作业,不是吗?

试试这个正则表达式:

\b[aeiouy]?([bcdfghjklmnpqrstvwxz][aeiouy])*[bcdfghjklmnpqrstvwxz]?\b

它会找到所有带有交替元音/辅音的单词。请注意,它也将传递单字母单词,随后将其过滤掉。并使用ignore-case标志运行它。