在以下代码中,如果我使用:
for line in fin:
它仅针对“ a”执行
但是,如果我使用:
wordlist = fin.readlines()
for line in wordlist:
然后执行一遍z。
但是readlines()
一次读取整个文件,这是我不想要的。
如何避免这种情况?
def avoids():
alphabet = 'abcdefghijklmnopqrstuvwxyz'
num_words = {}
fin = open('words.txt')
for char in alphabet:
num_words[char] = 0
for line in fin:
not_found = True
word = line.strip()
if word.lower().find(char.lower()) != -1:
num_words[char] += 1
fin.close()
return num_words
该语法for line in fin
只能使用一次。完成此操作后,您已经用尽了文件,除非您通过来“重置文件指针”,否则您将无法再次读取它fin.seek(0)
。相反,fin.readlines()
将为您提供一个列表,您可以反复遍历。
我认为使用Counter
(python2.7
+)进行简单的重构可以为您省去麻烦:
from collections import Counter
with open('file') as fin:
result = Counter()
for line in fin:
result += Counter(set(line.strip().lower()))
它将计算文件中包含特定字符的单词数(每行1个单词)(这是您认为原始代码的含义……如果我输入错了,请更正我)
您也可以使用defaultdict
(python2.5
+)轻松地做到这一点:
from collections import defaultdict
with open('file') as fin:
result = defaultdict(int)
for line in fin:
chars = set(line.strip().lower())
for c in chars:
result[c] += 1
最后,把它踢得很老套-我什至不知道什么时候setdefault
被介绍…:
fin = open('file')
result = dict()
for line in fin:
chars = set(line.strip().lower())
for c in chars:
result[c] = result.setdefault(c,0) + 1
fin.close()
问题内容: @Entity @Table(name = “Section_INST”) public class Section { } 以下程序不起作用-> 如果我将Section.java中的层叠选项更改为CascadeType.ALL,那么它将起作用。 我认为PERSIST应该保存我的对象d =,但是会引发异常: org.hibernate.TransientPropertyValueExc
问题内容: 我对文件进行迭代有问题。这是我在解释器上键入的内容和结果: 当我尝试再次遍历同一个打开的文件时,我什么也没得到! 根本没有输出。为了解决这个问题,我必须对文件进行编辑,然后再次将其打开以进行读取!那是正常行为吗? 问题答案: 是的,这是正常行为。基本上,你是第一次读取文件的末尾(可以像读取磁带一样对它进行图片处理),因此除非你使用重定位到文件开头的位置进行重置,否则你将无法从文件中读取
问题内容: 我正在尝试从模板中的控制器填充对象列表。 这是控制器: 但是,我编写的这段代码无法正常工作: 用户界面中未显示任何内容。 相反,如果我在控制器中编写代码,它将起作用: 由于我知道在控制器中要做的事情很诱人,因此我在尝试避免尽可能多地使用。 如果有人能证明的正确使用和差异betwee 和(其中是控制器的别名),我应该心存感激。 问题答案: 问题是您正在访问内部函数而不是控制器函数中存在的
问题内容: 我试图在HashMap中找到一个键。我可以使用’get’打印选定的键,但是在if语句中使用’containsKey’时,找不到该键。 我知道该键存在于Map中,但它一直返回false。有什么想法的人吗? 我的代码: 这是Location类的代码: 问题答案: 您必须确保该类已正确实现其和方法(文档)。也就是说,如果两个对象实际上相等,则它们应该共享一个公共哈希码,并且它们的方法应该返回
问题内容: 我正在为Python学习win32com,但遇到了一个奇怪的问题。 我正在尝试在词典列表中导出Outlook联系人。我的代码与win32com.client.Dispatch(“ Outlook.Application)完美配合。但是它与win32com.client.gencache.EnsureDispatch(” Outlook.Application)返回0个联系人,该联系人应
我试图使用cURL获取一个HTTP请求响应,这很好。然而,当我在Python中使用“请求”包时,我没有得到任何响应(它只是超时,没有错误或返回响应)。 我的cURL代码如下: 当我在cURL代码中使用-v时,我得到以下消息: 试图144.126.138.12... TCP_NODELAY集 连接到144.126.138.12(144.126.138.12)端口17001(#0) POST/api/