Python if-else-break语句

时间:2013-09-22 10:02:55

标签: python search text line

我需要一些关于代码的帮助:

#!/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语句,但我怎么能写出所有的陈述?

2 个答案:

答案 0 :(得分:2)

我还没有完全理解你的问题,break会停止循环或迭代,我没有看到你在任何地方使用它。但无论如何,这里有一些关于你的代码的提示:

  1. if var1 in line !=True:永不检查,因为在您执行if 'Program' in line:之前有一行。 var1等于'Program'所以你之后写的所有内容都不会被运行
  2. 如果我正确理解您的代码,您会尝试根据内容为每行添加标记。但是,没有理由将它们彼此绑定。在你当前的代码中(并忽略我提到的逻辑错误),即'duration'检查仅在'start'检出时才进行。我猜这不是一个要求。解决这个很容易。将所有if条件放在同一缩进级别上。
  3. 像这样:

    `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