2013-01-16 38 views
-1

CSV以KML我有一個小問題,我總是得到錯誤:通過Python

TypeError: cannot concatenate 'str' and 'list' objects

import csv 
import os 
fp = "filepath/testfile.csv" 
file = open(fp) 
lines =file.readlines() 
for line in lines: 
    line = line.strip() 
    fields = line.split(',') #comma seperated 
    branch = fields[0].split() #splitting 
    lat = fields[1].split() 
    lng = fields[2].split() 
    web = fields[3].split() 
    email = fields[4].split() 
    adress = fields[5].split() 

    print ("branch: " + branch) #print splitted 
    print ("lat: " + lat) 
    print ("lng: " + lng) 
    print ("web :" + web) 
    print ("email: " + email) 
    print ("address: " + address) 

f = open('filepath/csv2kml.kml', 'w') 
fname = "testing_Actions" 
#Writing the kml file. 
f.write("<?xml version='1.0' encoding='UTF-8'?>\n") 
f.write("<kml xmlns='http://earth.google.com/kml/2.1'>\n") 
f.write("<Document>\n") 
f.write(" <name>" + fname + '.kml' +"</name>\n") 
for row in lines: 
    f.write(" <Placemark>\n") 
    f.write("  <ExtendedData>\n") 
    f.write("   <Data name=the branch name>\n") 
    f.write("    <value>\n") 
    f.write("    " + str(branch) + "\n") 
    f.write("    </value>\n") 
    f.write("   </Data>\n") 
    f.write("   </Data name=Web>\n") 
    f.write("    <value>\n") 
    f.write("    " + str(web) +"\n") 
    f.write("    </value>\n") 
    f.write("   </Data>\n") 
    f.write("   </Data name=email>\n") 
    f.write("    <value>\n") 
    f.write("    " + str(email) + "\n") 
    f.write("    </value>\n") 
    f.write("   </Data>\n") 
    f.write("  <description>" + str(address) + "</description>\n") 
    f.write("  <Point>\n") 
    f.write("   <coordinates>" + str(lat) + "," + str(lng) + "</coordinates>\n") 
    f.write("  </Point>\n") 
    f.write(" </Placemark>\n") 
f.write("</Document>\n") 
f.write("</kml>\n") 
print ("File Created. ") 
f.close 
file.close() 

我找不到我的錯誤。

回答

1

我找不到我的錯誤

可以。如果您完全讀取錯誤消息,它還會告訴您,在哪些行中發生錯誤。

是否在這裏?

print ("branch: " + branch) #print splitted 

,並在以下幾行,你會再做連接字符串"branch"和列表branch

嘗試使用替代它:

print ("branch: {}".format(branch)) #print splitted 
-3

我解決它!

print ("branch: " + branch) #print splitted 
print ("lat: " + lat) 
print ("lng: " + lng) 
print ("web :" + web) 
print ("email: " + email) 
print ("address: " + address) 

編輯

print ("branch: " + `branch`) #print splitted 
print ("lat: " + `lat`) 
print ("lng: " + `lng`) 
print ("web :" + `web`) 
print ("email: " + `email`) 
print ("address: " + `address`) 

f.write("   <Data name=the branch name>\n") 
f.write("    <value>\n") 
f.write("    " + `branch` + "\n") 
f.write("    </value>\n") 
f.write("   </Data>\n") 

+2

如果你正在學習Python,那麼請不要用反引號來學習它。 – eumiro

+0

是的,爲SO上的代碼保留反引號。改爲使用單引號(''''),或者使用雙引號('「」')。 – Volatility