我曾经使用过几十种编程语言,但是对Python还不熟悉。
这可能是我第一次(或者第二次)在这里提问,请温柔一点...
我试图高效地将类似HTML的Markdown文本转换为Wiki格式(具体来说,是将Linux Tomboy/GNote笔记转换为Zim格式),但卡在了转换列表上。
对于这样的两层无序列表...
- 第一层
- 第二层
Tomboy/GNote使用的是类似于...
<list><list-item>第一层<list><list-item>第二层</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>
的LEVEL为0
,第二个为1
,以此类推。
每次遇到</list>
时,LEVEL将递减。
<list-item>
标签会转换为带有星号的项目符号(根据需要在前面加上换行符),</list-item>
标签将被删除。
最后...问题来了...
- 如何获取LEVEL的值并将其用作制表符的乘数?
re
。它无法很好地处理嵌套标签。 - Joel Cornett