Re: [问题] 如何在dbf档中进行资料比对?

楼主: Neisseria (Neisseria)   2014-06-10 23:56:56
※ 引述《ryoma0915 (芸~)》之铭言:
: 我有一个这样的dbf档
: http://ppt.cc/nupm
: AREA X Y id
: 201144.20807 203500.00000 2535500.00000 2
: 410470.48979 204500.00000 2535500.00000 2
: 96374.47460 199500.00000 2533500.00000 2
: 118790.12873 196500.00000 2531500.00000 2
: 157389.24175 195500.00000 2530500.00000 2
: 514871.81518 196500.00000 2530500.00000 2
: 259449.53306 195500.00000 2529500.00000 2
: 602155.49015 196500.00000 2529500.00000 2
: 我想要找出 x y 相同的座标点
: 然后area 要进行相加
: 这是我的code
: http://pastebin.com/4uwLj83F
: 想问大家哪里错误呢?
: 谢谢大家^^
讲一下这段...
i=0
for rec in range(record['X']):
for re in range(record['Y']):
if rec[i] == rec[i+1] & re[i] == re[i+1]:
print
妳可能对 range 的用法会错意
请在 interactive python 下看 help(range) 的说明...
例如:range(4) 传回 [0, 1, 2, 3]
如果要走访资料 要以读入的 Dbf 物件跑循环才读得到 DBF 档的资料
这里考虑简单的情形,内存够大可以加载所有的数据
from collections import defaultdict
from dbfpy import dbf
location = dict()
db = dbf.Dbf("data.dbf")
# 走访 DBF 档案,将数据进行加总
for rec in db:
if not str(rec['X']) in location:
location[str(rec['X'])] = defaultdict(float)
location[str(rec['X'])][str(rec['Y'])] += float(rec['AREA'])
db.close()
for k_x in location.keys():
for k_y in location[k_x].keys():
print k_x, k_y, location[k_x][k_y]
参考看看
不过,如果这是作业或工作的话
还是得自己花一下时间熟悉一下 Python 才是
觉得妳 Python 似乎还不熟 就硬要处理一些数据...
作者: ryoma0915 (芸~)   2014-06-11 00:28:00
AttributeError: 'str' object has no attribute 'keys'恩恩 谢谢大大的提醒!似乎要马上学飞超难的!
楼主: Neisseria (Neisseria)   2014-06-11 00:29:00
我自己程式写错,噗~ 改过了,参考看看
作者: ryoma0915 (芸~)   2014-06-11 00:30:00
过这次应该会从基础打起吧^^谢谢你 得熟悉才行阿~

Links booklink

Contact Us: admin [ a t ] ucptt.com