文森特映射html输出无效的html

时间:2015-02-26 22:29:29

标签: python html vincent

我正在用Python和Vincent编写一些代码来显示一些地图数据。

文档中的示例如下所示:

import vincent

county_topo = r'us_counties.topo.json'
state_topo = r'us_states.topo.json'

geo_data = [{'name': 'counties',
             'url': county_topo,
             'feature': 'us_counties.geo'},
            {'name': 'states',
             'url': state_topo,
             'feature': 'us_states.geo'}]

vis = vincent.Map(geo_data=geo_data, scale=3000, projection='albersUsa')
del vis.marks[1].properties.update
vis.marks[0].properties.update.fill.value = '#084081'
vis.marks[1].properties.enter.stroke.value = '#fff'
vis.marks[0].properties.enter.stroke.value = '#7bccc4'
vis.to_json('map.json', html_out=True, html_path='map_template.html')

运行此代码会输出一个html文件,但格式不正确。它是某种python字符串表示形式b'<html>....</html>'

如果我删除了引号和前导b,那么当通过内置的python服务器运行时,html页面会按预期工作。

我的输出声明出了什么问题?

1 个答案:

答案 0 :(得分:0)

来自文档:

  

&#39; b&#39;的前缀或者&#39; B&#39;在Python 2中被忽略;它表明了   literal应该成为Python 3中的字节文字(例如,当代码是   自动转换为2to3)。 A&#39; u&#39;或者&#39; b&#39;前缀可能是   接着是一个&#39; r&#39;前缀。

您可以使用以下方式对其进行切片:

with open('map_template.html', 'w') a f:
    html = f.read()[2:-1]
    f.truncate()
    f.write(html)

这将打开您的html文件

b'<html><head><title>MyFile</title></head></html>' 

删除前两个和最后一个字符,给你:

    <html><head><title>MyFile</title></head></html>