小编Qro*_*rom的帖子

从HTML到Markdown的html2text

我可以使用html2text库将一些HTML代码成功地转换为python中的markdown,它看起来像这样:

def mark_down_formatting(html_text, url):
    h = html2text.HTML2Text()

    # Options to transform URL into absolute links
    h.body_width = 0
    h.protect_links = True
    h.wrap_links = False
    h.baseurl = url

    md_text = h.handle(html_text)

    return md_text
Run Code Online (Sandbox Code Playgroud)

暂时很不错,但是有一定的局限性,因为我没有找到任何方法来定制文档的输出。

实际上,我不需要太多自定义,我只需要将此HTML标签<span class="searched_found">example text</span>在markdown中转换为我提供的任何内容。可能是这个+example text+

因此,我正在寻找问题的解决方案,因为html2text是一个很好的库,它允许我配置一些选项,例如我在超链接中显示的那些,因此基于此库提供解决方案将是一件很不错的事情。

更新:

我有一个使用BeautifulSoup库的解决方案,但我认为它是一个临时补丁,因为它增加了另一个依赖关系,并且增加了很多不必要的处理。我在这里所做的是解析为markdown 之前编辑HTML :

def processing_to_markdown(html_text, url, delimiter):
    # Not using "lxml" parser since I get to see a lot of different HTML
    # and the "lxml" parser …
Run Code Online (Sandbox Code Playgroud)

html python markdown parsing

5
推荐指数
1
解决办法
1636
查看次数

查询集过滤器:检索 manytomany 字段作为每个对象的列表

我想检索模型的每个对象,仅包含它们的 id 和它们在多对多字段中的 id 列表。

我的模型:

class Wordlist(models.Model):
  words = models.ManyToManyField(Word)


class Word(models.Model):
  word = models.CharField(max_length=256)
Run Code Online (Sandbox Code Playgroud)

我有这个代码:

list(Wordlist.objects.all().annotate(w=F('words')).values_list('pk', 'w'))
Run Code Online (Sandbox Code Playgroud)

它给了我这个:

[{'pk': 1, 'w': 7},
 {'pk': 1, 'w': 13},
 {'pk': 1, 'w': 17},
 {'pk': 2, 'w': 29},
 {'pk': 1, 'w': 42},
 {'pk': 3, 'w': 52},
 {'pk': 2, 'w': 65}
 ...
]
Run Code Online (Sandbox Code Playgroud)

我想要的是:

[{'pk': 1, 'w': [7, 13, 17, 42,...]},
 {'pk': 2, 'w': [29, 65,...]},
 {'pk': 3, 'w': [52,...]},
 ...
]
Run Code Online (Sandbox Code Playgroud)

一个简单的解决方案是根据它们的 id 组合 dicts,但我认为这不是一个好的做法并且非常有效,因为结果我们可能有数十万个 dicts。

另外,我想知道是否可以通过一个请求来做相反的事情;检索一个Wordlist词的列表是针对请求中的每个词Word

python django django-queryset

5
推荐指数
1
解决办法
1636
查看次数

Debezium 错误,此连接器不知道架构

我有一个使用 Debezium 的项目,主要基于此示例,然后将其连接到 Apache Pulsar。

\n\n

我改变了一些配置。该文件现在如下所示:

\n\n
database.history=io.debezium.relational.history.MemoryDatabaseHistory\nconnector.class=io.debezium.connector.mysql.MySqlConnector\noffset.storage=org.apache.kafka.connect.storage.FileOffsetBackingStore\noffset.storage.file.filename=offset.dat\noffset.flush.interval.ms=5000\nname=mysql-dbz-connector\ndatabase.hostname={ip}\ndatabase.port=3308\ndatabase.user={user}\ndatabase.password={pass}\ndatabase.dbname=database\ndatabase.server.name=test\ntable.whitelist=database.history_table,database.project_table\nsnapshot.mode=schema_only\nschemas.enable=false        \ninclude.schema.changes=false\npulsar.topic=persistent://public/default/{0}\npulsar.broker.address=pulsar://{ip}:6650\ndatabase.history=io.debezium.relational.history.MemoryDatabaseHistory\n
Run Code Online (Sandbox Code Playgroud)\n\n

正如您可能理解的,我想要做的是监视数据库的修改history_table和修改,然后将有效负载写入 Apache Pulsar。project_table

\n\n

我的问题如下。无论我使用什么快照模式,当写入偏移量时,我都无法重新启动 Debezium,而不会在下一次数据库更新时出现错误。

\n\n
Encountered change event for table database.history_table whose schema isn\'t known to this connector\n
Run Code Online (Sandbox Code Playgroud)\n\n

它仅发生在现有offset.dat文件上。我认为这是因为文件中的架构为空offset.dat。以这个为例:

\n\n
\xc2\xa8\xc3\x8csrjava.util.HashMap\xe2\x81\x84\xc2\xa1\xe2\x88\x9a`\xe2\x80\x94F\nloadFactorI thresholdxp?@wur[B\xc2\xa8\xc3\x9b\xc2\xafT\xe2\x80\xa1xpG{"schema":null,"payload":["mysql-dbz-connector",{"server":"test"}]}uq~U{"ts_sec":1563802215,"file":"database-bin.000005","pos":79574,"server_id":1,"event":1}x\n
Run Code Online (Sandbox Code Playgroud)\n\n

我首先怀疑我用来使 JSON 更简洁的schemas.enable=falseinclude.schema.changes=false参数,但它们的值不会改变文件中的任何内容offset.dat

\n

database jboss-tools debezium apache-pulsar

2
推荐指数
1
解决办法
5006
查看次数