如果,else语句输出

时间:2013-09-24 20:01:37

标签: python if-statement

for i in range(len(npa)):
    filename = '/lca_rcdist.php?npa1=503&nxx1=745&npa2=503&nxx2=' + npa[i]
    reply = urllib.request.urlopen(servername + filename)

    if reply.status != 200:
        print('Error sending request', reply.status, reply.reason)
    else:
        data = reply.readlines()
        reply.close()
        for line in data[:showlines]:
            cLine = line.decode('utf-8')
            if '"ofrom">N<' in cLine:
                print('NXX ,' + npa[i]) 

以下输出是NXX,269NXX,298NXX,300NXX等等,有没有办法添加if和else语句,以便输出在第一个条目前面不包含逗号和NXX?例如:269NXX, 298NXX?我是新手,仍然喜欢这些脚本上的if和else语句。关于如何使用if更改输出的任何ifo,否则将调整statemnet。

4 个答案:

答案 0 :(得分:5)

创建一个列表,然后使用str.join()

result = [] # NEW
for i in range(len(npa)):
    ... # blah, blah, same as your example, until
            if '"ofrom">N<' in cLine:
                result.append(npa[i])  # CHANGED
print (','.join(result))  #NEW

答案 1 :(得分:2)

我不懂python,但你可以试试这个

在循环之前声明一个变量并将值设置为0,然后如果条件打印没有NXX,则变量的值首先为0,并将变量值更改为1并将else代码放入NXX。希望这会有所帮助。

flagfirst=0
for line in data[:showlines]:
    cLine = line.decode('utf-8')
    if '"ofrom">N<' in cLine:
        if flagfirst==0:
            print(npa[i]) 
            flagfirst=1
        else:
            print('NXX ,' + npa[i])

答案 2 :(得分:1)

我知道这比你提出的要复杂得多,但我就是这样做的(我不是说这是正确的方式 - 我实际上并不确定)。

我会改变整个最后一个for循环:

for line in data[:showlines]:
    cLine = line.decode('utf-8')
    if '"ofrom">N<' in cLine:
        print('NXX ,' + npa[i]) 

对此:

'NXX,'.join([npa[i] for l in data[:showlines] if '"ofrom">N<' in l.decode('utf-8')])

答案 3 :(得分:0)

for i in range(len(something))这是Python中的反模式。为此纠正您的代码,以及其他一些事项:

results = []
for i in npa:
    qs = urllib.urlencode({'npa': i})
    filename = '/lca_rcdist.php?npa1=503&nxx1=745&npa2=503&{0}'.format(qs)
    url = '{0}{1}'.format(servername,filename)
    reply = urllib.request.urlopen(url)

    if reply.status != 200:
        print('Error sending request: {0.status} {0.reason}'.format(reply))
    else:
        data = reply.readlines()
        reply.close()
        for line in data[:showlines]:
            cLine = line.decode('utf-8')
            if '"ofrom">N<' in cLine:
                results.append('NXX{0}'.format(i))