2013-09-24 288 views
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等等,是有办法,如果添加和else语句,使输出不包含的第一个条目前面的逗号和NXX?例如:269NXX, 298NXX?我对此很陌生,仍然在用这样的脚本语句来处理if和else语句。任何ifo如何使用if来更改输出,否则statemnet将被appriciated。如果else语句输出

+2

请修复代码的缩进。正确的缩进在Python中至关重要。 – Barmar

+2

只要颠倒“NXX”和“npa [i]”的顺序? 'print(npa [i] +'NXX,')'? –

+0

@HenryKeiter然后你会在最后一个元素之后得到一个额外的逗号。 – Barmar

回答

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 
+0

快,不是吗? ;)+1。 – freakish

+0

是的,哇我喜欢这个网站 – pzhrk

+0

这不是省略了NXX的吗? –

1

我知道这是不是你的要求有点太复杂了,但是这是我怎么会做(我不是说这是正确的方式 - 我不确定)。

我愿意为循环从此改变整个过去:

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')]) 
2

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

之前声明一个变量循环并将该值设置为0,然后如果在没有NXX的条件下打印时变量的值为0,并将变量的值更改为1并将其他代码与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]) 
+0

+1:这是个好主意。 – freakish

+0

这就是我们以前在语言内置'join()'函数之前做过的事情。顺便说一句,我会用'True'和'False'而不是'0'和'1'。 – Barmar

+0

这可行,但没有逗号分隔#s – pzhrk

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))