【发布时间】:2017-03-02 17:13:33
【问题描述】:
如果这是一个非常简单的问题,请原谅我。我已经在这几个小时了。我正在尝试每行读取一个 csv 文件。但是在最后一行我不希望它附加任何“,”这就是为什么我在 if-elif 语句中分隔问题。
我不确定这是否只是我困了,但我似乎无法解决这个简单的问题。当我打印出 print (iter, row_count , iter < row_count) 时,它还没有进入任何条件,我 100% 确定最后一行是 False。
#read csv
data = csv.reader(open(csvFile, 'rb'), dialect='excel')
reader = csv.reader(open(csvFile, 'r'), delimiter=",")
tempData = list(reader)
row_count = len(tempData)
#geojson template
template = \
'''\
{
"type" : "Feature",
"id" : "%s",
"geometry" : {
"type" : "Point",
"coordinates" : [%s, %s]
},
"properties" : {
"name" : "%s"
}
}
'''
#head of geojson
output = \
'''
{ "type" : "FeatureCollection",
"features" : [
'''
#loop in csv
iter = 0
for row in data:
iter += 1
print (iter, row_count , iter < row_count)
if (iter < row_count == True):
print("TRUE")
id = row[0]
name = row[1]
latitude = row[2]
longitude = row[3]
output += template % (row[0], row[3], row[2], row[1])
output += ","
print (output)
elif (iter < row_count == False):
print("FALSE")
id = row[0]
name = row[1]
latitude = row[2]
longitude = row[3]
output += template % (row[0], row[3], row[2], row[1])
print (output)
#tail of geojson
output += \
'''\
]
}
'''
#open geojson file to write output
outFileHandler = open(geojsonFilePath, 'w')
outFileHandler.write(output)
print("Converted to geoJSON")
outFileHandler.close()
【问题讨论】:
-
几个小窍门:1)不要使用
iter作为变量名;它已经是一个内置函数的名称,并且 2)iter < row_count已经是一个布尔值;您无需将其与True或False进行比较。 -
因为
row_count没有初始化 -
@Ssein 它在我的代码上方某处初始化。我刚刚在这里发布了 sn-p,这是主要问题...
-
@chepner 同样适用于
id- 它也隐藏了一个内置名称 -
@chepner 呵呵是的。我不应该这样做,但我尝试了所有我能做的选择
标签: python if-statement iteration conditional-statements