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などですが、出力の最初のエントリの前にコンマと NXX が含まれないように if および else ステートメントを追加する方法はありますか? 例: 269NXX, 298NXX? 私はこれに不慣れで、これらのようなスクリプトの if ステートメントと else ステートメントにまだ苦労しています。if、else ステートメントを使用して出力を変更する方法に関する ifo は評価されます。

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 に答える