1
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

4 回答 4

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
于 2013-09-24T20:11:08.987 回答
2

我不知道python,但你可以试试这个

在循环之前声明一个变量并将值设置为 0,然后如果变量的值是 0,则在第一个 if 条件打印没有 NXX 并将变量的值更改为 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])
于 2013-09-24T20:13:35.103 回答
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')])
于 2013-09-24T20:12:35.577 回答
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)) 
于 2013-09-24T20:21:03.280 回答