2016-04-10 15 views
-3
val = [] 

for c in f: 

    val.append(ord(c)) 

val = [w - 5 if w > 20 else w for w in val] 

Özgün metin dosyası içinde çok sayıda boşluk bulunan bir cümle içerir. Metin dosyasını ASCII koduna dönüştürürken, boşlukları ASCII koduna dönüştürür.Listeden boşlukları nasıl ortadan kaldırırsınız? Python

+4

Okuduğunuz dosyanın bir örneğini ve beklenen tahmini çıktısını gösterebilir misiniz? – idjaw

+2

Lütfen bir [Minimal, Tam ve Doğrulanabilir örnek] (http://stackoverflow.com/help/mcve) belirtin. Kodunuzun başlığındaki soruyla ne ilgisi olduğunu göremiyorum. – timgeb

+0

@timgeb kodu ona karakterleri int olarak gösterir. Mükemmel bir şekilde IMO. – user161778

cevap

-1

Şu an için for döngüsünüz, f içinde bulduğu her karakteri val değerine ekler. Değişken c eklenecek hakkında karakterini tutar, böylece sadece önceden bir if ifadeye ' ' varlığı için kontrol edebilirsiniz: döngü, f.replace(' ','') için f değiştirmek senin içinde

val = [] 

for c in f: 
    if c != ' ': 
     val.append(ord(c)) 

val = [w - 5 if w > 20 else w for w in val] 
2

. Bu boşlukları kaldıracaktır.

Bu kod çalışması gerekir: Ben f varsayıyorum c in f ve ord(c) itibaren

val = [] 

for c in f.replace(' ',''): 

    val.append(ord(c)) 

val = [w - 5 if w > 20 else w for w in val] 
+1

Bir değiştirmeyi (iki döngü kullanacak) yapmak yerine, yalnızca karakteri kontrol etmenin en iyisi olduğuna inanıyorum. Demek istediğim, zaten dizgeden geçiyor. – user161778

0

bir str olduğunu. if c filtresi boşlukları ortadan kaldırır.

codes = (ord(c) for c in f if c) 
# codes is a genex. Now you can use it any way you want, e.g 
codes_ = [code-5 if code > 20 else code for code in codes] 
İlgili konular