使用来自 arcGis 的用户输入来选择特定的 csv 列
Using user input from arcGis to chose certain csv column
我目前是编码的初学者,在 python 编码方面非常新。
我其实想重写csv文件(读取csv并将其保存到另一个csv)
我要问你的是如何从 arcGis 用户输入中读取某个 csv 列。
我使用 "field" 数据类型和 "multivalues" 作为输入,因此我可以选择要显示的列。
例如,我有这个 csv:
key, province, population, area
A1, provA, 100, 20
B1, provB, 200, 10
C1, provC, 50, 30
现在从输入中我只为列选择键和区域,我使用:
GetParameterAsText(0)
然后我使用这个代码:
headers = arcpy.GetParameterAsText(0)
newhead = headers.replace("'", "")
headersList = newhead.split(";")
arcpy.AddMessage(headersList)
我得到了这个结果(headersList):
[u'key', u'area']
当我想从上面的结果中读取特定列时,问题 开始:
data = []
with csvdata as csvfile:
reader = csv.DictReader(csvfile, delimiter=",")
for row in reader:
try:
new_row = [headersList] <--------------- This One
data.append(new_row)
except IndexError as e:
print e
pass
with open(csvout, "w+") as to_file:
writer = csv.writer(to_file, delimiter=",")
for new_row in data:
writer.writerow(new_row)
我想让new_row喜欢这个(从headersList获取):
new_row = [row['key'], row['area']]
但我就是不知道怎么办,有人能帮忙吗?
来自@jedwards的评论,答案是这样的:
data = []
with csvdata as csvfile:
reader = csv.DictReader(csvfile, delimiter=",")
for row in reader:
try:
new_row = [row[k] for k in headersList]
data.append(new_row)
except IndexError as e:
print e
pass
with open(csvout, "wb") as to_file:
writer = csv.writer(to_file, delimiter=",")
writer.writerow(headersList)
for new_row in data:
writer.writerow(new_row)
再次感谢!
我目前是编码的初学者,在 python 编码方面非常新。
我其实想重写csv文件(读取csv并将其保存到另一个csv)
我要问你的是如何从 arcGis 用户输入中读取某个 csv 列。
我使用 "field" 数据类型和 "multivalues" 作为输入,因此我可以选择要显示的列。
例如,我有这个 csv:
key, province, population, area
A1, provA, 100, 20
B1, provB, 200, 10
C1, provC, 50, 30
现在从输入中我只为列选择键和区域,我使用:
GetParameterAsText(0)
然后我使用这个代码:
headers = arcpy.GetParameterAsText(0)
newhead = headers.replace("'", "")
headersList = newhead.split(";")
arcpy.AddMessage(headersList)
我得到了这个结果(headersList):
[u'key', u'area']
当我想从上面的结果中读取特定列时,问题 开始:
data = []
with csvdata as csvfile:
reader = csv.DictReader(csvfile, delimiter=",")
for row in reader:
try:
new_row = [headersList] <--------------- This One
data.append(new_row)
except IndexError as e:
print e
pass
with open(csvout, "w+") as to_file:
writer = csv.writer(to_file, delimiter=",")
for new_row in data:
writer.writerow(new_row)
我想让new_row喜欢这个(从headersList获取):
new_row = [row['key'], row['area']]
但我就是不知道怎么办,有人能帮忙吗?
来自@jedwards的评论,答案是这样的:
data = []
with csvdata as csvfile:
reader = csv.DictReader(csvfile, delimiter=",")
for row in reader:
try:
new_row = [row[k] for k in headersList]
data.append(new_row)
except IndexError as e:
print e
pass
with open(csvout, "wb") as to_file:
writer = csv.writer(to_file, delimiter=",")
writer.writerow(headersList)
for new_row in data:
writer.writerow(new_row)
再次感谢!