曾使用过几十种语言,但对Python不熟悉。在
我在这里的第一个(也许是第二个)问题,所以请温柔。。。在
试图有效地将类似HTML的标记文本转换为wiki格式(特别是将linuxtomboy/GNote notes转换为Zim)却陷入了转换列表的困境。在
对于像这样的两级无序列表。。。在
假小子/侏儒用的是。。。在
<list><list-item>First level<list><list-item>Second level</list-item></list></list-item></list>
然而,Zim个人维基希望这是。。。在
* First level
* Second level
。。。带前导标签。在
我已经研究了regex模块函数re.sub公司(), 重新匹配(), 搜索(),等等,并且发现了Python很酷的能力,可以将重复的文本编码为。。。在
^{pr2}$因此,看起来应该有一种方法来做像。。。在
newnote = re.sub("<list>", LEVEL * "\t", oldnote)
其中LEVEL是注释中<list>
的序数(发生次数)。因此,它将是0
对于第一个<list>
,对于第二个1
,等等
然后,每次遇到</list>
时,级别都会降低。在
<list-item>
标记被转换为项目符号的星号(前面适当加上换行符),并删除</list-item>
标记。在
最后。。。问题是。。。在
您确实应该使用xml解析器来完成此操作,但要回答您的问题:
这对您的示例有效,仅适用于您的示例。使用XML解析器。您可以使用
^{pr2}$xml.dom.minidom
(它包含在Python中(至少2.7),无需下载任何内容):输出:
使用Beautifulsoup,它允许您迭代标记,即使它们是自定义的。做这种手术很实用
我使用了嵌套列表理解,但您可以使用嵌套for循环
^{pr2}$我希望这对你有帮助。在
在我的示例中,我使用了beautifulsoup3,但该示例应该与BeautifulSoup4一起工作,但仅限于导入更改。在
相关问题 更多 >
编程相关推荐