2016-03-19 17 views
1

Tüm öğelerin bir klasörden dosya adı olduğu bir listem var. Bir liste haline getirildiğinde, bu ['me.txt', 'you.txt', 'him.txt', 'her.txt'] şeklindedir. Ancak, onu ['ben', 'sen', 'o', 'onun'] yapmak istiyorum. Şerit işlevi .strip (".txt") kullandım, ancak hala eski yazdırılıyor. Herhangi bir yardım? dizideki öğe değişenPython neden soyulmuyor?

files = [] 
for (dirpath, dirnames, filenames) in walk(path): 
    files.extend(filenames) 
    for filenames in files: 
     filenames = filenames.strip(".txt") 
    print(files) 
+1

Dikkat, 'str.strip()', çalıştığını düşündüğünüz şekilde çalışmaz. "Trust.txt" .strip (".txt") 'yi deneyin ve [belgeler] 'e bakın (https://docs.python.org/3/library/stdtypes.html#str.strip). – marcelm

cevap

0

Aslında değildir; for döngüsü tarafından oluşturulan bir kopyasını değiştiriyorsunuz.

files = [] 
for (dirpath, dirnames, filenames) in walk(path): 
    files.extend(filenames) 
    files = list(map(lambda x: x.strip(".txt"), files)) 
    print(files) 
:

files = [] 
for (dirpath, dirnames, filenames) in walk(path): 
    files.extend(filenames) 
    files = [file.strip(".txt") for file in files] 
    print(files) 

Ayrıca her öğeye bir işlevi uygulamak için map işlevini kullanabilirsiniz: Mevcut birine bir şey uygulayarak yeni bir liste üreten bir liste anlama kullanarak daha iyi olurdu

+0

teşekkürler, şimdi çalışıyor :) – Eric1108

+0

@ Eric1108 Sorun değil! Lütfen size yardımcı olan cevapları kabul etmeyi unutmayın. –

+0

üzgünüm, taşma yapmak için yeni. Cevapları kabul etme hakkında bilgi sahibi olmadı – Eric1108

İlgili konular