python - 使用 Python 将 HTML 标记添加到文本中
问题描述
我在文件“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)
解决方案
下面的代码做了我需要的。
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)
推荐阅读
- javascript - 如何从threejs应用程序中导出变形网格?
- php - 如何在 Laravel 中使用 required_if 验证?
- android - 在 Android 应用程序中使用 MangoDb
- scala - 在 Scala 中将中缀转换为后缀表示法
- python-3.x - 使用 Selenium 抓取(Python)时只有第一行
- grafana - Grafana 和 influxdb 中的地理围栏
- awk - 从 awk 中的多个输入输出匹配列
- java - 如何绕过 Maven 中的编译?
- c# - 用户控制 - (已存在具有相同键的条目)
- android - Android 在添加对 64 位的支持时:找不到 DSO 问题