我可以使用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) 我想检索模型的每个对象,仅包含它们的 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。
我有一个使用 Debezium 的项目,主要基于此示例,然后将其连接到 Apache Pulsar。
\n\n我改变了一些配置。该文件现在如下所示:
\n\ndatabase.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\nRun Code Online (Sandbox Code Playgroud)\n\n正如您可能理解的,我想要做的是监视数据库的修改history_table和修改,然后将有效负载写入 Apache Pulsar。project_table
我的问题如下。无论我使用什么快照模式,当写入偏移量时,我都无法重新启动 Debezium,而不会在下一次数据库更新时出现错误。
\n\nEncountered change event for table database.history_table whose schema isn\'t known to this connector\nRun Code Online (Sandbox Code Playgroud)\n\n它仅发生在现有offset.dat文件上。我认为这是因为文件中的架构为空offset.dat。以这个为例:
\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\nRun Code Online (Sandbox Code Playgroud)\n\n我首先怀疑我用来使 JSON 更简洁的schemas.enable=false或include.schema.changes=false参数,但它们的值不会改变文件中的任何内容offset.dat。