【问题标题】:Formatting csv file data with html template使用 html 模板格式化 csv 文件数据
【发布时间】:2010-11-04 07:28:08
【问题描述】:

我有一个 csv 文件,数据和一个 HTML 文件,模板。

我想要一个脚本,该脚本将使用 html 文件作为模板,从 csv 文件中为每条记录创建一个单独的 html 文件。

在 Ruby 中执行此操作的最佳方法是什么? Python? 是否有任何一种语言都可以使用的工具/库?

【问题讨论】:

    标签: python html ruby formatting csv


    【解决方案1】:

    Ruby 内置了 CSV 处理,这使得输出静态 HTML 文件变得相当简单。
    见:

    实际上,Python 也是如此,所以这实际上是个人喜好问题(或任何您已经配置的问题)。

    【讨论】:

    • 感谢 csv 部分。但是 html 模板部分呢?
    • 好的。我刚刚发现 Ruby 已经有了一个模板引擎。 ERB。
    【解决方案2】:

    Jinja2 的 Python。

    import jinja
    import csv
    
    env= jinja.Environment()
    env.loader= jinja.FileSystemLoader("some/directory")
    template= env.get_template( "name" )
    
    rdr= csv.reader( open("some.csv", "r" ) )
    csv_data = [ row for row in rdr ]
    
    print template.render( data=csv_data )
    

    事实证明,您可能只需将rdr 直接传递给 Jinja 进行渲染就可以逃脱。

    如果模板看起来像这样,它将适用于各种 Python 结构,包括迭代器。

    <table>
    {% for row in data %}
    <tr>
        <td>{{ row.0 }}</td><td>{{ row.1 }}</td>
    </tr>
    {% endfor %}
    </table>
    

    【讨论】:

    • 如果 CSV 文件有标题行,您可以使用 csv.DictReader() 代替 csv.reader,如下所示: print template.render(rows=csv.DictReader(csv_file)),与像这样的模板变量:{{ row['Last Name'] }}
    猜你喜欢
    • 1970-01-01
    • 2018-01-02
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多