2016-03-19 30 views
1

我有一個列表,其中所有元素都是文件夾中的文件名。當它成爲一個列表時,它是['me.txt','you.txt','him.txt','her.txt']。但是,我想讓它['我','你','他','她']。我使用了strip函數.strip(「.txt」),但它仍然打印出前者。任何幫助?爲什麼python不能剝離?

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

請注意,'str.strip()'不能像你認爲它的工作方式那樣工作。試試''trust.txt「.strip(」.txt「)',並查看[documentation](https://docs.python.org/3/library/stdtypes.html#str.strip)。 – marcelm

回答

0

你實際上並沒有改變數組中的項目;您正在更改由for循環創建的副本。你會更好使用列表理解,通過施加一些東西到現有生成一個新的列表:

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

您也可以使用map函數的函數適用於每個項目:

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

謝謝,現在工作:) – Eric1108

+0

@ Eric1108沒問題!請記住接受幫助你的答案。 –

+0

對不起,我新來堆棧溢出。不知道如何接受答案 – Eric1108