2011-04-21 94 views
5

IP adresleriyle dolu bir listeye sahibim. Listede yinelemek ve her IP adresini yazdırmak istiyorum. Bunu yaparken çalıştığınızda:Python: Bir listeyi parantez ve tek tırnak işareti olmadan yazdırma?

def printList(theList): 
    for item in theList: 
     print item 

Ve çıkış şuna benzer:

['8.0.226.5'] 
['8.0.247.5'] 
['8.0.247.71'] 
['8.0.249.28'] 
['8.0.249.29'] 

ben döngüde "[0] baskı öğesi" dahil her şeyi, çalıştık. Neyi yanlış yapıyorum?

+9

Gerçekten mi? Yazdır öğeyi [0] 'denediğinizde ne oldu? –

+0

IndexError: liste endeksi aralık dışı – Dan

+3

Bu listenin neye benzediğini bize gösterir misiniz? –

cevap

6

Listedeki her öğenin kendisi bir tek listedir. Bunun için bir neden yoktur - bir isim veremezseniz, gidip kaldırın (re.findall üzerinden re.find kullanarak veya re.findall tarafından döndürülen listeden tek bir öğeyi döndürerek), yalnızca gereksizdir ve bu durumda sorun yaratır .

olursa olsun listede tek eleman baskı oluyor gibi print item[0] çalışmalı ve listelerin str() farklı olarak, tırnak neden olan (ilk repr aracılığıyla öğeyi çalışmayacak ve herhangi olsaydı Basılamayan karakterlerden kurtulmak istiyorum dizgede). Ve yedekli tekil listelerinden kurtulduktan sonra, print '\n'.join(items) da işe yarayacak.

theList içinde boş bir liste varsa, kodunuz hata verir. recentFile'da IP gibi biçimlendirilmiş hiçbir şey içermeyen bir satır varsa, boş bir liste returnIP tarafından döndürülür ve comparisonFile içinde herhangi bir satır varsa (bu arada: başlangıçta açıklayıcı bir adla açılır, ancak chechMatch'da açıklayıcı bir ad olmadan tekrar ve tekrar) IP adresi içermiyorsa, ip parametresi olarak geçirilen boş listeye eşit olan başka bir boş liste alırsınız. Yani recentFile'daki IP olmayan isimler için boş listeler eklenecektir. returnIP tekil listelerini yerine dizeleri döndürürseniz, bu satırda IP yok olduğunda None öğelerini kullanın veNone değerini döndürürse, denetim/ekleme işlemini atlayın.

+0

Bunu çözdüm. Görünüşe göre listenin en üstünde boş bir kalem vardı, o yüzden orada duruyordu. Yardım ettiğin için teşekkür ederim!Düzenleme: Ben üye değilim, ya da size son verdim :( – Dan

+0

@Dan: Neden olur ve nasıl çözüleceğini önerileri ayrıntılı bir açıklama eklendi .. Biraz geç, ama eğer herhangi biri yardımcı olur ... :) – delnan

+0

Teşekkürler! CompareFile olayı için, ben aslında daha sonra başvuruyordum ama bir sebepten dolayı değişken ismini kullanırken işe yaramayacaktım, bu yüzden açık işlev satır içi ile değiştirmeyi denedim ve iyi çalıştı. Bunun neden olduğundan emin değilim. Sorunu yeniden oluşturmaya çalışabilirim ve anlamaya çalışabilirim. – Dan

0

Sanırım theList IP'lerin listesi değil, IP'lerin listelerinin listesidir (her biri 1 öğeli).

Sorunun başka bir nedeni, üzerine yazdıran bir str yöntemiyle bir IP sınıfınızın olması olabilir.

İlgili konular