我需要一些关于代码的帮助:
#!/usr/bin/python
output = open('XML/epg.xml','w')
with open('SORT/epg_slo_xml.txt','r') as txt:
for line in txt:
var1 = 'Program'
if 'Program' in line:
if var1 in line !=True:
var = line
var_s = '<program>'
var_stop = '</program>'
var_uk = var_s+line+var_stop
if 'Start' in line:
var2=line
var_s1='<start>'
var_stop1 ='</start>'
var_uk1 = var_s1+var2+var_stop1
var_out = var_uk+var_uk1
if 'Duration' in line:
var3=line
var_s2='<duration>'
var_stop2 ='</duration>'
var_uk2 =var_s2+var3+var_stop2
var_out2= var_uk+var_uk1+var_uk2
if 'Title' in line:
var4=line
var_s3='<title>'
var_stop3 ='</title>'
var_uk3 =var_s3+var4+var_stop3
var_out3 =var_uk+var_uk1+var_uk2+var_uk3
output.write('<item>'+var_out3+'</item>')
如何断开循环,并在写入输出所有var_uk语句时?你能给我一些建议我已经尝试了很多但却没有结果。
我的文件看起来像:
Program 10
Start 20130918 11:50:00
Duration 02:10:00
Title Obvestila
Program 5
Start 20130918 12:00:00
Duration 00:20:00
Title TV TRANSFRONTALIERA TG R
Program 10
Start 20130918 11:50:00
Duration 02:10:00
Title Obvestila
Program 13
Program 13
Start 20130918 12:00:00
Duration 00:15:00
Title TV prodaja
Start 20130918 12:15:00
Duration 01:00:00
Title S hrano do vitkosti
Start 20130918 13:15:00
Duration 00:25:00
Title Najini začetki
Start 20130918 13:40:00
Duration 00:30:00
Title Oddamo v najem
Start 20130918 14:10:00
Duration 01:00:00
Title Colin in Justin prenavljata domove
我知道逐行写输出,每个if语句,但我怎么能写出所有的陈述?
答案 0 :(得分:2)
我还没有完全理解你的问题,break会停止循环或迭代,我没有看到你在任何地方使用它。但无论如何,这里有一些关于你的代码的提示:
if var1 in line !=True:
将永不检查,因为在您执行if 'Program' in line:
之前有一行。 var1等于'Program'所以你之后写的所有内容都不会被运行`if 'Duration' in line:
...code...`
`if 'Title' in line:
...code...`
3。你的代码是非常重复的。基本上所有的条件检查都做同样的事情,那么为什么不将它包装在一个函数中呢?
像这样:def wrap_tag(line, tag):
return '<%s>%s</%s>' % (tag, line, tag)
然后:
if 'Start' in line:
wrap_tag(line, 'start')
4。由于它是一个XML文件,因此使用ElementTree或lxml库可能会更好。他们真的很好,也很容易学习。
答案 1 :(得分:0)
如何将您呈现的代码放在函数中?然后,您可以使用return
语句随时退出列表中的var_uk
变量。
另外,如果您正在解析XML数据,那么我建议您查看标准的python库,例如ElementTree。