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。
答案 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))