Добавьте HTML-теги к тексту, используя Python - PullRequest
0 голосов
/ 20 марта 2019

У меня есть текст в файле «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>

До сих пор я пробовал код ниже.

Я установил два логических значения, которые используются, чтобы проверить, содержит ли текущая строка «-» или «-» значение «Ложь» изначально.Если в текущей строке есть «-» или «-», то код добавляет соответствующие теги в начало строки, изменяет логическое значение на 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)

1 Ответ

0 голосов
/ 21 марта 2019

Код ниже сделал то, что мне нужно.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...