我正在尝试使用python将XML文件转换为HTML。我们有.css文件,其中包含输出格式的代码。我们一直在尝试运行以下代码:
def main():
infile = open("WTExcerpt.xml", "r", encoding="utf8")
headline=[]
text = infile.readline()
outfile = open("DemoWT.html", "w")
print("<html>\n<head>\n<title>Winter's Tale</title>\n",file=outfile)
print("<link rel='stylesheet' type='text/css' href='Shakespeare.css'>\n</head>\n<body>\n",file=outfile)
while text!="":
#print(text)
text = infile.readline()
text = text.replace("<w>", "")
if "<title>" in text and "</title>" in text:
print("<h1>",text,"</h1>\n",file=outfile)
elif text=="<head>":
while text!="</head>":
headline.append(text)
print("<h3>headline<\h3>\n",file=outfile)
main()
但我们不知道如何让Python将“text”和“headline”作为我们的变量(每次执行循环时更改)而不是纯字符串。你有什么主意吗?非常感谢你。
答案 0 :(得分:1)
您似乎已经研究了如何输出变量以及一些字符串文字:
print("<h1>",text,"</h1>\n",file=outfile)
或者
print("<h1>{content}</h1>\n".format(content=text), file=outfile)
或只是
print("<h1>" + text + "</h1>\n", file=outfile)
问题更多的是您的循环如何在标题中读取 - 您需要类似标志变量(in_headline
)来跟踪我们当前是否正在解析<head>
标记内的文本或不。
def main():
with open("WTExcerpt.xml", "r", encoding="utf8") as infile, open("DemoWT.html", "w") as outfile:
print("<html>\n<head>\n<title>Winter's Tale</title>\n",file=outfile)
print("<link rel='stylesheet' type='text/css' href='Shakespeare.css'>\n</head>\n<body>\n",file=outfile)
in_headline = False
headline = ""
for line in infile:
text = line.replace("<w>", "")
if "<title>" in text and "</title>" in text:
print("<h1>",text,"</h1>\n",file=outfile)
elif text=="<head>":
in_headline = True
headline = ""
elif text == "</head>":
in_headline = False
print("<h3>", headline, "</h3>\n", file=outfile)
elif in_headline:
headline += text
但是,建议使用xml parser而不是有效地编写自己的https://docs.python.org/2/library/array.html。这很快就变成了一项复杂的练习 - 例如,如果<title>
被分割成多行,或者其他任何内容与<head>
标记位于同一行,则此代码将会中断。
答案 1 :(得分:0)
1.而不是最初将标题创建为空列表,为什么不将其设置为在循环中分配? 2.your'while'循环永远不会完成。您应该使用for循环,而不是使用while循环:
$('#foo').click();
你应该迭代文件对象而不是使用while循环 - 为1,因为你构造while循环它的方式永远不会结束,而对于2,因为它是指数级更多的“Pythonic”:)。