首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >填充模板.txt文件导入Zim Wiki的LibreOffice/其他方法

填充模板.txt文件导入Zim Wiki的LibreOffice/其他方法
EN

Stack Overflow用户
提问于 2018-02-28 06:36:16
回答 1查看 192关注 0票数 0

我使用的是Zim wiki (跨平台,自由/开源)应用程序,我用它来保存个人维基,其中有来自表格的大量数据,复制和粘贴,我自己编写的内容,以及下载和附加.png和.html文件以供查看和离线访问。

未写入或粘贴的数据可以以名称、url地址以及图像和其他附件的名称和位置的形式存储在表中。

要插入到zim中,我可以使用带有WSIWYG的前端,或者要制作每个条目的骨架,我可以修改一个模板文本条目。如果我这样做,除了每一行中每个字符的位置和标识之外,什么都不重要。

通过提供此图像中的文本:

DandelionDemo source text

--我可以为Dandelion添加以下条目:

DandelionDemo Wiki

因此,我可以在Zim中生成并命名Wiki条目,它为我创建.txt文件,并插入时间戳和标题,因此,这种类型的条目的模板将不包括粘贴的字段:

代码语言:javascript
运行
复制
**Full Scientific Name:   **[[|]]**[syn]**
**Common Name(s): **
=====  =====
**USDA PLANTS entry for Code:** [[https://plants.usda.gov/core/profile?symbol=|]]   **-   CalPhotos available images for:** [[https://calphotos.berkeley.edu/cgi/img_query?query_src=photos_index&where-taxon=|]]
**---**
**From - Wikipedia **[[wp?]]   **-   **[[/Docs/Plants/]] 
{{/Docs/Plants/?height=364}}{{/Docs/Plants/?height=364}}
**()** //,// [[|(source)]]
**()** //// [[|(source)]]
**Wikipedia Intro:  **////
---

所以有内容的第一行,在第31个字符(这是一个制表符)之后,粘贴"http... {etc}.然后该过程将插入“蒲公英...这些数据可能来自"table1“和"table2",或者将表组合成一个非规范化的"table1table2",其中每一行都可以转换为文本或.csv,或者我不知道,您会怎么想?

在LibreOffice中有什么方法可以做到这一点吗?我使用wiki Base生成了一个填充字段的“书”表单,但它的数据要简单得多,不需要使用LibreOffice,也不需要对图像和附件进行拖放粘贴。因此,也许答案是变得更简单?这些表目前不是已注册数据库的一部分,但一旦我决定了这样做的方法,我就可以这样做。

我最终是在寻找一种“方法”,希望是一种“简单”的方法。然而,这可能不是在LibreOffice中。如果没有,我知道我可以用Python做到这一点,但我还没有学到多少关于Python的知识。如果它涉及一门语言,那是第一个也是唯一一个我不知道我会为这个项目投资学习的语言。如果你知道用Python做这件事的“方法”,请告诉我,我的第一个项目和框架我的学习过程的方法将是学习你分享的方法。

如果你知道一些其他的Linux GUI,我绝对感兴趣,但只对那些只需要最少编译或不需要编译的活动的自由和开放源码构建感兴趣。我知道SQL和数据库管理系统的基础知识。在过去,我已经让Microsoft SQL server lite工作了,但DBeaver还没有。如果你知道一个命令行界面的方式也让我知道,但我是一个自学成才的热爱户外的Linux新手,主要知道如何调整程序中的小设置,如何使用中等简单的程序,如ImageMagick,我已经为Drupal和Wordpress构建了一些灯栈(没有BASH等)。

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2018-03-01 18:32:21

好的,既然你想学习一些python,让我向你推荐一种方法。首先你需要一个模板引擎-like jinja2 (还有很多其他的)-,在我们的例子中是一个.csv文件的数据源,-could是其他的类似于数据库-最后是一些代码,逐行读取csv并将内容与模板混合。

示例CSV文件

代码语言:javascript
运行
复制
1;sample
2;dandelion
3;just for fun

示例模板

代码语言:javascript
运行
复制
**Full Scientific Name:   **[[|]]**[syn]**
**Common Name(s): *{{name}}*
=====  =====
USDA PLANTS entry for Code: *{{symbol}}*
---

示例代码

代码语言:javascript
运行
复制
#!/usr/bin/env/python
#
# Using the file system load
#
# We now assume we have a file in the same dir as this one called
# test_template.ziim
#

from jinja2 import Environment, FileSystemLoader
import os
import csv

# Capture our current directory
THIS_DIR = os.path.dirname(os.path.abspath(__file__))


def print_zim_doc():
    # Create the jinja2 environment.
    # Notice the use of trim_blocks, which greatly helps control whitespace.
    j2_env = Environment(loader=FileSystemLoader(THIS_DIR),
                         trim_blocks=True)

    template = j2_env.get_template('test_template.zim')
    with open('example.csv') as File:
        reader = csv.reader(File, delimiter=';')
        for row in reader:
            result = template.render(
                symbol=row[0]
                , name=row[1]
            )
            # to save the results
            with open(row[0]+".txt", "wt") as fh:
                fh.write(result)
            fh.close()


if __name__ == '__main__':
    print_zim_doc()

代码非常简单,读取与python代码位于同一文件夹中的模板,打开csv文件(也位于同一位置),迭代csv的每一行并使用csv列的值呈现模板,以填充模板中的{{var_name}},最后将呈现结果保存在一个名为csv列值之一的新文件中。此示例将生成3个文件(1.txt、2.txt、3.txt)。在这里,您可以扩展和改进代码以获得所需的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49019088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档