Re: [问题] txt内容切割加总

楼主: goodseeyou (好看你)   2014-10-11 00:55:36
不知道您的资料是不是至少有对整数部分做排序
以下的作法假设有对整数部分做递增排序
另外允许某个整数跳号
IO 我用stdin。 改成with open as data, 然后 for line in data 意思也一样。
#program begin
import sys
import math
if __name__ == '__main__':
#initial value, should be decided by data
section_int = 1
section_sum = 0.0
#process begin
for line in sys.stdin:
try:
v = float(line.strip('\n'))
if v < section_int:
section_sum += v
else:
print '%d\t%.2f'%(section_int -1 , section_sum)
section_int = math.ceil(v)
section_sum = v
except ValueError as e:
print '%s value error: %s'%(line.strip('\n'), e)
print '%d\t%.2f'%(section_int -1, section_sum)
#program end
另外您原本的方法遇到几个不同的整数,就需要 scan table 几次,应该是慢的主因。
希望能知道这个方法改善的幅度大不大,感恩。
※ 引述《wohtp (会喵喵叫的大叔)》之铭言:
: ※ 引述《PTT007 (优质单身好男人)》之铭言:
: : 如果我有一个txt内容如下:
: : 0.01
: : 0.02
: : 0.03
: : 0.09
: : 1.03
: : 1.02
: : 1.01
: : 我想将 0.X 和 1.X 各自累加起来
: : 输出结果为 0.15 和 3.06
: : 我目前的做法是
: : number_of_line = len(txt) # txt总共几行
: : result = 0
: : for i in range(2):
: : for j in range(number_of_line):
: : if i == int(current_row_value):
: : result += current_row_value
: : print result
: : result = 0
: : 但我这样写,资料量多的话就会跑很久
: : 请问有其他较好的方法吗
: : 谢谢
: txt = open("input.txt")
: s = txt.readline() # 先读一行进来
: result1 = 0 # 一次就可以做完,loop两次干嘛?
: result2 = 0
: while s != '': # 检查档案尾
: if s[0] == '0': # 如果你很确定只有 0 和 1 需要分开的话...
: result1 += float(s)
: else:
: result2 += float(s)
: s = txt.readline() # 进下一行
: print(result1, result2)

Links booklink

Contact Us: admin [ a t ] ucptt.com