繁体   English   中英

Python if-else-break语句

[英]Python if-else-break statement

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

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

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

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

像这样:

`if 'Duration' in line:
     ...code...`

`if 'Title' in line:
     ...code...`

你的代码是非常重复的。 基本上所有的条件检查都做同样的事情,那么为什么不将它包装在一个函数中呢?

像这样:

def wrap_tag(line, tag):
    return '<%s>%s</%s>' % (tag, line, tag)

然后:

if 'Start' in line:
     wrap_tag(line, 'start')

4.由于它是一个XML文件,你可能最好使用ElementTree或lxml库。 他们真的很好,也很容易学习。

如何将您呈现的代码放在函数中? 然后,您可以使用return语句随时退出列表中的var_uk变量。

另外,如果您正在解析XML数据,那么我建议您查看标准的python库,例如ElementTree

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM