Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python向文本添加HTML标记_Python_Text - Fatal编程技术网

使用Python向文本添加HTML标记

使用Python向文本添加HTML标记,python,text,Python,Text,我在文件“File1”中有一个文本,其中包含以下文本: -Accounting -HR Some text -IT --Networks --Storage --DBA 我需要一段代码,它将逐行读取File1,用适当的HTML标记替换“-”和“-”,并将下面显示的最终结果保存在文本文件File2中 <ul> <li>Accounting</li> <li>HR</li> </ul> Some

我在文件“File1”中有一个文本,其中包含以下文本:

-Accounting  
-HR

Some text  

-IT  
--Networks   
--Storage  
--DBA  
我需要一段代码,它将逐行读取File1,用适当的HTML标记替换“-”和“-”,并将下面显示的最终结果保存在文本文件File2中

<ul>
<li>Accounting</li>
<li>HR</li>
</ul>

Some text

<ul><li>IT
       <ul>
          <li>Networks</li>
          <li>Storage</li>
          <li>DBA</li>
         </ul>
         </li></ul>
  • 会计
  • 人力资源
一些文本
    • 网络
    • 储藏
    • 数据库管理员
到目前为止,我尝试了下面的代码

我将用于检查当前行是否包含“-”或“-”的两个布尔值设置为False。如果当前行中有“-”或“-”,则代码会在行首添加适当的标记,将布尔值更改为True并转到下一行

现在布尔值用于查看前一行中是否有“-”或“-”,如果有破折号,它将在前一行的开头添加适当的标记,但我们已经在下一行了。另一种方法是检查下一行是否以“-”或“-”开头,但我不知道如何开始。当我使用next()时,该行被跳过。在前面一行同时读取两个文件并检查下一行中的内容是更好的解决方案吗

    single_dash_prev_line = False
    double_dash_prev_line = False
    for line in File1:
        current_line = line

        if line[0] == "-":
            if line[1] != "-":
                if single_dash_prev_line == False:
                    new_line = "<ul><li>" + current_line[1:]
                    File2.write(new_line)
                    single_dash_prev_line = True
                elif single_dash_prev_line == True:
                    new_line = "</li><li>" + current_line[1:]
                    File2.write(new_line)
                    single_dash_prev_line = True


            elif line[1] == "-":
                if single_dash_prev_line == True:
                    new_line = "<ul><li>" + line[2:]
                    print(new_line)
                    File2.write(new_line)
                    double_dash_prev_line = True
                elif double_dash_prev_line == True:
                    new_line = "</li><li>" + line[2:]
                    File2.write(new_line)
                    double_dash_prev_line = True

        elif single_dash_prev_line == True:
            new_line = "</li></ul>" + current_line[1:]
            File2.write(new_line)
            single_dash_prev_line = False
        elif double_dash_prev_line == True:
            new_line = "</li></ul>" + current_line[1:]
            File2.write(new_line)
            single_dash_prev_line = False

        else:
            single_dash_prev_line = False
            double_dash_prev_line = False
            File2.write(current_line)
single\u dash\u prev\u line=False
双破折号上一行=假
对于文件1中的行:
当前线路=线路
如果第[0]行=“-”:
如果行[1]!="-":
如果单破折号上一行==假:
新建线路=“
  • ”+当前线路[1:] 文件2.写入(新行) 单破折号上一行=真 elif单点划线上一行==真: 新建行=“
  • ”+当前行[1:] 文件2.写入(新行) 单破折号上一行=真 elif行[1]==“-”: 如果单破折号上一行==真: 新的行=“
    • ”+行[2:] 打印(新行) 文件2.写入(新行) 双破折号上一行=真 elif双破折号上一行==真: 新的行=“
    • ”+行[2:] 文件2.写入(新行) 双破折号上一行=真 elif单点划线上一行==真: 新建线路=“
    ”+当前线路[1:] 文件2.写入(新行) 单破折号前一行=假 elif双破折号上一行==真: 新建线路=“
”+当前线路[1:] 文件2.写入(新行) 单破折号前一行=假 其他: 单破折号前一行=假 双破折号上一行=假 文件2.写入(当前_行)
下面的代码满足了我的需要

with open("finalfile.txt", 'w', encoding='utf-8') as File2, open("test.txt", "r", encoding='utf-8') as File1:
previous_line = ""
new_line = ""
double_dash_prev_line = False
single_dash_prev_line = False
for line in File1:
    current_line = line
    if line[0] == "-":
        if line[1] != "-":
            if single_dash_prev_line == False and double_dash_prev_line == False:
                new_line = "<ul><li> " + current_line[1:]
                File2.write(new_line)
                single_dash_prev_line = True
                double_dash_prev_line = False
            elif single_dash_prev_line == True:
                new_line = "</li><li> " + current_line[1:]
                File2.write(new_line)
                single_dash_prev_line = True
                double_dash_prev_line = False
            elif double_dash_prev_line == True:
                new_line = "</ul></li></ul><ul><li> " + current_line[1:]
                File2.write(new_line)
                single_dash_prev_line = True
                double_dash_prev_line = False


        elif line[1] == "-":
            if single_dash_prev_line == True:
                new_line = "<ul><li> " + line[2:]
                File2.write(new_line)
                double_dash_prev_line = True
                single_dash_prev_line = False
            elif double_dash_prev_line_line == True:
                new_line = "</li><li> " + line[2:]
                File2.write(new_line)
                double_dash_prev_line = True
                single_dash_prev_line = False
    elif single_dash_prev_line == True:
        new_line = "</li></ul> " + current_line[1:]
        File2.write(new_line)
        single_dash_prev_line = False
        double_dash_prev_line = False
    elif double_dash_prev_line_line == True:
        new_line = "</li></ul></ul> " + current_line[1:]
        File2.write(new_line)
        double_dash_prev_line = False
        single_dash_prev_line = False
    else:
        single_dash_prev_line = False
        double_dash_prev_line = False
        File2.write(current_line)
以open(“finalfile.txt”,“w”,encoding='utf-8')作为文件2,以open(“test.txt”,“r”,encoding='utf-8')作为文件1:
上一行=“”
new_line=“”
双破折号上一行=假
单破折号前一行=假
对于文件1中的行:
当前线路=线路
如果第[0]行=“-”:
如果行[1]!="-":
如果单划线上划线==假,双划线上划线==假:
新建线路=“
  • ”+当前线路[1:] 文件2.写入(新行) 单破折号上一行=真 双破折号上一行=假 elif单点划线上一行==真: 新建行=“
  • ”+当前行[1:] 文件2.写入(新行) 单破折号上一行=真 双破折号上一行=假 elif双破折号上一行==真: 新建线路=“
  • ”+当前线路[1:] 文件2.写入(新行) 单破折号上一行=真 双破折号上一行=假 elif行[1]==“-”: 如果单破折号上一行==真: 新的行=“
    • ”+行[2:] 文件2.写入(新行) 双破折号上一行=真 单破折号前一行=假 elif双破折号上一行=真: 新的行=“
    • ”+行[2:] 文件2.写入(新行) 双破折号上一行=真 单破折号前一行=假 elif单点划线上一行==真: 新建线路=“
    ”+当前线路[1:] 文件2.写入(新行) 单破折号前一行=假 双破折号上一行=假 elif双破折号上一行=真: 新建线路=“
”+当前线路[1:] 文件2.写入(新行) 双破折号上一行=假 单破折号前一行=假 其他: 单破折号前一行=假 双破折号上一行=假 文件2.写入(当前_行)
只需学习如何将内容写入文件,然后将内容写入名为
index.html的文件即可。您可以将HTML标记写入该文件:)Seb_u您在解决此问题时尝试了什么?我们不想帮助你成为一名更好的程序员。所以请告诉我们你试过什么。假设您不知道,我将给您一个提示:在文本文件中的de行上循环,将正则表达式改为“-”,并用占位符替换。@duhaime sorry应该更清楚一些。我知道如何写入文件。我知道如何添加标签。但是我有数千个这样的文本文件,我必须向其中添加HTML标记,因此没有手动添加的选项,如果只有几页的话,我已经可以添加了。@Seb_u只是读取每个文件并生成一个新的对应HTML文件——不要将HTML写入输入文件,用你的标记生成新的输出文件…@duhaime我想我又不清楚了。这里我需要的是根据当前行和前一行中的内容添加适当标记的逻辑。或者它可以被重写以进行检查