将选项卡式文本转换为 html 无序列表?

2023-11-27

我是一名初学者程序员,所以这个问题可能听起来微不足道:我有一些文本文件包含制表符分隔的文本,例如:

A
    B
    C
        D
        E

现在我想从中生成无序的 .html 列表,其结构为:

<ul>
<li>A
<ul><li>B</li>
<li>C
<ul><li>D</li>
<li>E</li></ul></li></ul></li>
</ul>

我的想法是编写一个 Python 脚本,但如果有更简单(自动)的方法,那也很好。为了识别缩进级别和项目名称,我将尝试使用以下代码:

import sys
indent = 0
last = []
for line in sys.stdin:
    count = 0
    while line.startswith("\t"):
       count += 1
       line = line[1:]
    if count > indent:
       indent += 1
       last.append(last[-1])
    elif count < indent:
       indent -= 1
       last = last[:-1]

试试这个(适用于您的测试用例):

import itertools
def listify(filepath):
    depth = 0
    print "<ul>"*(depth+1)
    for line in open(filepath):
        line = line.rstrip()
        newDepth = sum(1 for i in itertools.takewhile(lambda c: c=='\t', line))
        if newDepth > depth:
            print "<ul>"*(newDepth-depth)
        elif depth > newDepth:
            print "</ul>"*(depth-newDepth)
        print "<li>%s</li>" %(line.strip())
        depth = newDepth
    print "</ul>"*(depth+1)

希望这可以帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将选项卡式文本转换为 html 无序列表? 的相关文章