作者Lucemia (生の直感、死の予感)
看板Python
标题Re: [问题] 有关for回圈
时间Wed Aug 8 23:06:54 2007
像推文说的一样
.read() 只会是将整个档案的内容取出,因此只会执行一次
for i in ftr:
for i in ftr.read().split('\n')
这两种方式才是依行执行
另外这个问题用regular expression 做很快
import re
r1 = re.complie('(国[^学]+学)')
l = r1.findall(ftr.read())
d = {}
[d.update(k,l.count(k)) for k in l]
大概像这样
※ 引述《ya790206 (残云夺月)》之铭言:
: 标题: [问题] 有关for回圈
: 时间: Wed Aug 8 22:02:12 2007
:
: 感觉起来这个问题很蠢
: 这是读取榜单
: 然後计算该校多少人进这间大学的程式
: 不过我遇到一个问题
: 他for回圈只会执行print string 这行
: 等回圈执行完後才执行print 'ss'
: 为什麽会这样呢?
: 我所学告诉我应该print string和print 'ss'
: 执行次数应该一样
: 以下是程式码
: --------------------------------------------------------
:
: #coding=big5
: forCount={}
: ftr=open('abcd.txt')
: try:
: for string in[ftr.read()]:
: print string
: print 'ss'
: a=string.index('国')
: b=string.index('学')+3
: string=string[a+1:b-a-1]
: print string+'x'
: if string in forCount:
: forCount[string]+=1
: else:
: forCount.update({string:1})
: except Exception:
: print "ERROR"
: finally:
: ftr.close()
: print forCountfor (key,value) in forCount.items():
: print key+':'+str(value)raw_input()
:
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 59.116.129.56
: ※ 编辑: ya790206 来自: 59.116.129.56 (08/08 22:03)
: 推 subook:我猜 [ftr.read()] 里只有一个东西,也就是整个档案内容 08/08 22:29
: → subook:因此 for 也只执行了一次 08/08 22:32
: → subook:你可能是要用 readline 之类的... 08/08 22:32
: → subook:readlines 08/08 22:34
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.110.216.37
※ 编辑: Lucemia 来自: 140.110.216.37 (08/08 23:12)
1F:推 ya790206:谢啦~我再研究研究regular expression 08/08 23:19
2F:推 cccx:推~好方法! 08/09 04:07