【发布时间】:2012-04-27 00:26:05
【问题描述】:
曾使用过数十种语言,但对 Python 不熟悉。
我在这里的第一个(也许是第二个)问题,所以要温柔...
试图有效地将类似 HTML 的 markdown 文本转换为 wiki 格式(特别是 Linux Tomboy/GNote 到 Zim 的注释),但一直卡在转换列表上。
对于这样的 2 级无序列表...
- 第一层
- 二级
Tomboy/GNote 使用类似...
<list><list-item>First level<list><list-item>Second level</list-item></list></list-item></list>
但是,Zim 个人 wiki 希望这样......
* First level
* Second level
...带有前导标签。
我探索了正则表达式模块函数 re.sub()、re.match()、re.search() 等,并发现 Python 能够将重复文本编码为...
count * "text"
因此,看起来应该有一种方法可以做...
newnote = re.sub("<list>", LEVEL * "\t", oldnote)
其中 LEVEL 是注释中<list> 的序数(出现)。因此,第一个遇到的<list> 是0,第二个是1,等等。
每次遇到</list> 时,LEVEL 都会递减。
<list-item> 标记转换为项目符号的星号(在适当的情况下在换行符之前)和 </list-item> 标记被删除。
最后...问题...
- 如何获取 LEVEL 的值并将其用作制表符乘数?
【问题讨论】:
-
别想了,使用 html/xml 解析器,例如 BeautifulSoup 或 xml.dom.minidom,使用递归函数或使用堆栈/队列来打开/关闭标签并计算表格。基本上,您希望将标记文本转换为可用数据。然后将此代码友好的数据转换为您的其他标记样式。
-
不要使用
re。它在处理嵌套标签时不是很有效。 -
我将研究 html2text.py 程序的技术,但我要转换的实际上并不是 HTML。