LibreOffice/其他填充template.txt文件以导入Zim Wiki的方法

2024-09-27 02:24:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用应用程序Zim Wiki(cross-platform,FOSS),我正在使用它来保存一个个人Wiki,其中包含来自表格的大量数据、复制和粘贴、我自己编写、下载和附加.png和.html文件以供查看和脱机访问。你知道吗

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

为了插入到zim中,我可以将前端与WSIWYG一起使用,或者为了制作每个条目的框架,我可以修改一个模板文本条目。如果我这样做,除了每行中每个字符的位置和身份之外,什么都不重要。你知道吗

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

--我可以为蒲公英输入:
DandelionDemo Wiki。你知道吗

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

**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}在“|”之后,或者第32个字符是什么,依此类推。这些数据可以来自“table1”和“table2”,或者将这些表组合成一个非规范化的“table1table2”,其中每一行都可以转换成文本或.csv,或者我不知道,您怎么看?你知道吗

在LibreOffice有没有办法做到这一点?我使用LibreOffice Base生成了一个填充字段的“book”表单,但它的数据要简单得多,没有wiki风格,也没有拖放粘贴图像和附件。所以也许答案是简单一点?这些表目前不是已注册数据库的一部分,但我可以这样做,只要我决定了这样做的方法。你知道吗

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

如果您知道其他一些Linux GUI,我肯定很感兴趣,但只对涉及最少编译/不编译的活动自由和开放源码构建感兴趣。我知道SQL和DBMS的基础知识。过去,我让Microsoft SQL server lite工作,但还没有让DBeaver工作。如果你知道CLI的方式也让我知道,但我是一个自学成才的户外爱好Linux新手,主要知道如何调整程序中的小设置,如何使用像ImageMagick这样的中等容易的程序,我已经为Drupal和Wordpress构建了一些Lamp堆栈(没有BASH等…)。你知道吗

非常感谢!你知道吗


Tags: 文件数据方法图像文本程序名称docs
1条回答
网友
1楼 · 发布于 2024-09-27 02:24:10

好吧,既然你想学点python,那就让我给你推荐一种方法。首先需要一个模板引擎,比如jinja2(还有很多其他的),在我们的示例中是一个.csv文件的数据源,也可以是其他的,比如db,最后需要一些代码逐行读取csv并将内容与模板混合。你知道吗

示例CSV文件

1;sample
2;dandelion
3;just for fun

样本模板

**Full Scientific Name:   **[[|]]**[syn]**
**Common Name(s): *{{name}}*
=====  =====
USDA PLANTS entry for Code: *{{symbol}}*
 -

示例代码

#!/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\u name}},最后将呈现的结果保存在名为one的新文件中csv列值的。此示例将生成3个文件(1.txt、2.txt、3.txt)。从这里您可以扩展和改进代码以获得所需的结果。你知道吗

相关问题 更多 >

    热门问题