【发布时间】:2015-12-14 22:45:15
【问题描述】:
我正在寻找有关从 csv 文件返回结果 FORMAT 的指导。我迄今为止的代码部分实现了我的目标,但尽管通过这个和许多其他网站/论坛进行了大量研究,但我无法解决最后一步。我也在 gis.stackexchange 上提出了这个问题,但被重定向到这个论坛并带有评论 “与一般信息技术相关的问题,没有明确的 GIS 组件,在这里是题外话,但可以在 Stack 进行研究/提问溢出”.
我成功的从 csv 读取选定数据并以 dict 格式返回的 python 代码如下; (是的,我知道它以 dict 类型返回的原因是由于我的代码调用的格式!!!这就是问题的症结所在)
import arcpy, csv
Att_Dict ={}
with open ("C:/Data/Code/Python/Library/Peter/123.csv") as f:
reader = csv.DictReader(f)
for row in reader:
if row['Status']=='Keep':
Att_Dict.update({row['book_id']:row['book_ref']})
print Att_Dict
Att_Dict = {'7643': '7625', '9644': '2289', '4406': '4443', '7588': '9681', '2252': '7947'}
为了运行我的代码的下一部分,我需要上面的结果,但格式为 ; (这是一个非常长的代码的一部分,但唯一的显示停止是返回的格式在发布其他 200 左右行时价值很小)
Att_Dict = [[7643, 7625], [9644, 2289], [4406, 4443], [7588, 9681], [2252, 7947]]
虽然我已经进行了无休止的实验,并且可以通过恢复为 csv.Reader 而不是 csv.DictReader 来实现这一点,但我失去了“清除”列“状态”具有值“保留”的行的能力,即手头任务的要求。
迄今为止,我的大锤方法一直是在 Idle 中使用“搜索和替换”来修改返回的集合以满足其他要求,但我确信它可以通过编程而不是手动完成。与https://docs.python.org/2/library/index.html 类似但不完全相同,加上我在Returning values from multiple CSV columns to Python dictionary? 和Using Python's csv.dictreader to search for specific key to then print its value 的初始问题,以及geonet.esri 上的大量基于csv 的问题。
(使用 Win 7、ArcGIS 10.2、Python 2.7.5)
【问题讨论】:
标签: python-2.7 csv dictionary arcgis arcpy