2016-08-02 6 views
1

2つの問題がありますが、1つの問題を解決するともう一方の問題が解決すると思います。 私の目的は、いくつかの異なるWebページに移動し、ノード名を含む行を見つけることです、私は正常に動作しているためのforループを作成することができました。私のforループが再び実行されるたびに唯一の問題はリストから最後のノード名エントリを削除し、新しいノード名をその場所に追加することでリストに1つのノード名を残します。Python 3:My forループが最後のリストエントリを置き換えるのではなく、最後のリストエントリを置き換えています

webstringy = "mycompanysite.com/?NodeID=" 
webpage = "mycompanysite.com/?NetworkID=36" 
r2 = s2.get(webpage) 
bsobjswap = BeautifulSoup(r2.content) 
gotopagenums = [re.findall("\d+", i.get('onclick')) for i in bsobjswap.findAll('tr', attrs={'onclick':True})] 
#link = (len(gotopagenums)) 
print (gotopagenums) 
results = open("niki2.csv", 'w', newline='') 
wr2 = csv.writer(results, dialect='excel') 
for i in gotopagenums: 
    wr2.writerows([i]) 
for nodeno in gotopagenums: 
    nodenojoin = "".join(nodeno) 
    weblink = [webstringy+nodenojoin] 
    for weblnky in weblink: 
     r2 = s2.get(weblnky) 
     bsobjswap2 = BeautifulSoup(r2.content) 

    nodename = [(bsobjswap2.h1.span)] 
    test = [nodename] 
    test3 = '\n'.join(str(e) for e in test) 
    #if test3.startswith("[<span"): 
     # if test3.endswith("</span>]"): 
    test4 = (test3[72:]) 
    test5 = (test4[:-9]) 
    test5 = [test5] 
    print (test5) 


    resultfile = open("niki.csv", 'w') 
    wr = csv.writer(resultfile, delimiter=',', dialect='excel') 
    for i in test5: 
     wr.writerows([i]) 
     wr.writerows('\n') 

を発行に関する完全なコード、私はこれを実行すると最初のcsvファイル(niki2.csv)が正常に動作し、私は(すべてのエントリが1つのリストにあるため、これは各リストを想定しています私が好きなエントリは

問題のコード

 for weblnky in weblink: 
     r2 = s2.get(weblnky) 
     bsobjswap2 = BeautifulSoup(r2.content) 

    nodename = [(bsobjswap2.h1.span)] 
    test = [nodename] 
    test3 = '\n'.join(str(e) for e in test) 
    #if test3.startswith("[<span"): 
     # if test3.endswith("</span>]"): 
    test4 = (test3[72:]) 
    test5 = (test4[:-9]) 
    test5 = [test5] 
    print (test5) 


    resultfile = open("niki.csv", 'w') 
    wr = csv.writer(resultfile, delimiter=',', dialect='excel') 
    for i in test5: 
     wr.writerows([i]) 
     wr.writerows('\n') 

)個別の行でCSVに追加され、これは私の問題は、私は信じている、あるコードの一部です。私は、forループの中にTEST5リストを印刷するとき、私はループ出力

['GG Alperton'] 
['GG Angel'] 
['GG Ashford'] 
['GG Barking'] 
['GG Bedford'] 
['GG Birmingham'] 
['GG Bolton'] 
['GG Bothwell Street'] 
['GG Bournemouth'] 
['GG Bracknell'] 
['GG Brighton London road'] 
['GG Brighton Madeira'] 
['GG Bristol'] 
['GG Cardiff'] 
['GG Chadwell Heath'] 
['GG Charing Cross'] 
['GG Chelmsford'] 
['GG Colchester'] 
['GG Crawley'] 
['GG Croydon'] 
['GG Dartford'] 
['GG Derby'] 
['GG Ealing'] 
['GG East Croydon'] 
['GG Eastbourne'] 

FOR

を取得し、私はループの外TEST5印刷するとき、私はそう最後のエントリである

['GG Eastbourne'] 

を取得します試してみると、csvに書き込むときには、このエントリだけが含まれています。

上記のすべてのエントリを1つのリストにまとめて、.csvに正しく印刷できるようにしてください。

私は追加、マッピング、結合、より多くのfor-loopsを試しましたが、私はそれを理解できません。 GAURAV DHAMA

[['GG Alperton']] 
[['GG Angel']] 
[['GG Ashford']] 
[['GG Barking']] 
[['GG Bedford']] 
[['GG Birmingham']] 
[['GG Bolton']] 
[['GG Bothwell Street']] 
[['GG Bournemouth']] 
[['GG Bracknell']] 
[['GG Brighton London road']] 
[['GG Brighton Madeira']] 
[['GG Bristol']] 
[['GG Cardiff']] 
[['GG Chadwell Heath']] 
[['GG Charing Cross']] 
[['GG Chelmsford']] 
[['GG Colchester']] 
[['GG Crawley']] 
[['GG Croydon']] 
[['GG Dartford']] 
[['GG Derby']] 
[['GG Ealing']] 
[['GG East Croydon']] 
[['GG Eastbourne']] 

答えて

0

変更コードから

OUTPUTへ:

mylist = [] 
for nodeno in gotopagenums: 
    nodenojoin = "".join(nodeno) 
    weblink = webstringy+nodenojoin 
    r2 = s2.get(weblink) 
    bsobjswap2 = BeautifulSoup(r2.content) 
    nodename = [(bsobjswap2.h1.span)] 
    test = [nodename] 
    test3 = '\n'.join(str(e) for e in test) 
    #if test3.startswith("[<span"): 
    # if test3.endswith("</span>]"): 
    test4 = (test3[72:]) 
    test5 = (test4[:-9]) 
    test5 = [test5] 
    mylist.append(test5) 

print mylist 
resultfile = open("niki.csv", 'w') 
wr = csv.writer(resultfile, delimiter=',', dialect='excel') 
for i in mylist: 
    wr.writerow(i) 

なぜあなたのコード内の不要なリストを作成している、あなたは内部ループを必要としません。

+0

返信ありがとうございますが、リスト内の最後のエントリだけで同じ出力が得られています – vempi12

+0

iveが出力を私の質問の下に表示する方法を追加しました – vempi12

+0

回答を編集しました。もう一度 –

関連する問題