好的,我有一个程序,它应该读取一个文件英语排序.txt,并计算以“a”或“a”开头的单词出现的次数。我应该用一个模式对象。我真的不确定我错过了什么/错了什么。我很感激你的帮助。你知道吗
import sys
import re
count = 0
x = open("englishsorted.txt", "r")
while 1:
pattern = x.readline()
if pattern == re.compile(r'^[A,a].'): #regex that finds words starting with an A or a
count = count + 1
x.close()
print count
好的,首先您需要识别
count = count + 1
。 有一个更好的方法:现在你看不到任何输出仅仅因为你的程序从不停止。这是由
while 1:
引起的。你从来没有把一个条件,停止你的周期。你知道吗要停止它,请使用
break
,如下所示:有关文件读写的更多信息,请阅读docs,或参阅下面的内容。你知道吗
那么,你的正则表达式不起作用了。。。我有一个不同的方法:当一个单词的第一个字母是其中一个时,它以“a”或“a”开头,所以:
我认为逐行读取文件和您一样有点棘手,因此我建议您这样做:
编辑
下面是正则表达式的解决方案:
^
匹配字符串的开头,[aA]
表示一组字符,与docs一致。你知道吗好吧,让我们从你犯的错误开始。你知道吗
您创建了一个无限循环,它不会在文件末尾中断。
您将模式与文本行(您混淆地称之为
pattern
)进行比较。这两个是非常不同的东西;一个是类型str
,另一个是类型_sre.SRE_Pattern
。试着'abc' == re.compile(r'^[A,a].')
看看我在说什么。你应该to use the pattern in a search/match instead。你也在一次读一行,同时你可以在每行的开头进行模式搜索。你知道吗
如果存在
re.MULTILINE
,则符号^
在文件开头和每一新行开头搜索模式。.*
只与行的其余部分匹配。点是一个通配符,表示一个字符,带它的星号表示行中的任意多个字符。我添加了这两个字符,所以您可以提取整行。如果你不在乎台词是怎么说的,也不在乎有多少符合你的模式,你可以放弃它们。总而言之,这应该行得通。你知道吗你的代码有一个无限循环。循环:
永远不会结束。你知道吗
您只需按以下方式编写脚本:
exit变量将帮助脚本完成while循环。你知道吗
相关问题 更多 >
编程相关推荐