我尝试使用python3中的folium库创建一个Map。直到我在地图上添加标记,它都可以正常工作。添加标记后,输出结果将显示在空白的HTML页面中。
import folium
map = folium.Map(location=[20.59,78.96], tiles = "Mapbox Bright")
folium.Marker([26.80,80.76],popup="Hey, It's Moradabad").add_to(map)
map.save("mapOutput.html")
答案 0 :(得分:2)
根据我的经验,folium对单引号('
)非常敏感。
原因是,folium生成javascript,并将您的字符串转换为javascript字符串,并用单引号将其引起来。但是,它并不会转义字符串中包含的任何单引号(甚至不确定在js中是否可行),因此在字符串中具有单引号与不关闭python中的字符串具有相同的效果。
解决方案:用反引号(`)或(更好)使用@Bob Haffner的答案替换字符串中的所有单引号。
编辑:出于偶然,我偶然发现了另一个解决方案。显然folium.Popup
有一个自变量parse_html
。像这样使用它:
folium.Marker([x,y], popup=folium.Popup("Foo'Bar",parse_html=True)).add_to(map)
但是,如果没有遇到unicodeescape错误,我将无法使其工作。尽管如此,据推测它已存在,并且可能对您有用。
编辑2:正如我在github上被告知的那样,此问题将在下一版本中修复。参考:folium#962
答案 1 :(得分:2)
@MCO是绝对正确的。
我喜欢利用http://www.bursamalaysia.com/market/listed-companies/company-announcements/4372609来处理问题字符,
import folium
import html
map = folium.Map(location=[20.59,78.96], tiles = "Mapbox Bright")
folium.Marker([26.80,80.76],popup=html.escape("Hey, It's Moradabad")).add_to(map)
map.save("mapOutput.html")