如果这是一个非常简单的问题,请原谅我。我已经在这几个小时了。我正在尝试每行读取一个 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()
请您参考如下方法:
iter < row_count == True
和
iter < row_count == False
不要做你认为他们做的事。
Python 语法允许 chaining of comparisons , 所以像
a < x < b
相当于
(a < x) and (x < b)
这是一个非常方便的功能,但它意味着您的 iter < row_count == True相当于
(iter < row_count) and (row_count == True)
所以你应该改变if声明
if iter < row_count:
并更改 elif平原else:
