2015-10-20 149 views
0

我正在處理一些列表中包含unicode值的列表。我在一個列表中比較值,看看這些值是否存在於第二個列表中。然後我嘗試從第二個列表中取出匹配值並將它們放入第三個列表中。當我嘗試打印第三個列表時,它返回'None'。我錯過了什麼?反饋非常感謝!Python 2.7 - 將Unicode字符串添加到列表中

# -*- coding: utf-8 -*- 
import os 

def GetFilepaths(directory): 
    file_paths = [] 
    for root, directories, files in os.walk(directory): 
     for filename in files: 
      filepath = os.path.join(root, filename) 
      file_paths.append(filepath) 
    return file_paths 

umlauts = [u'Ä', u'Ü', u'Ö', u'ä', u'ö', u'ü'] 
filePathsList = GetFilepaths(u'C:\\Scripts\\Replace Characters\\Umlauts') 
filesWithUmlauts = [] 
for files in filePathsList: 
    for umlaut in umlauts: 
     if umlaut in files: 
      filesUmlautPaths = filepathsUmlauts.append(files) 
print filesUmlautPaths 

回答

1

這是因爲append返回類型爲None

例子:

>>> filepathsUmlauts = [] 
>>> filepathsUmlauts.append(1) 
>>> filepathsUmlauts 
[1] 
>>> x = filepathsUmlauts.append(2) 
>>> x 
>>> print x 
None 
>>> filepathsUmlauts 
[1, 2] 
>>> 

只需更換:

filesUmlautPaths = filepathsUmlauts.append(files) 

filepathsUmlauts.append(files) 

代碼中的另一個優化(我會讓你自己弄清楚)將使用set.intersection - 這將消除嵌套for循環。

+0

工作 - 謝謝! –

+0

太好了。如果有用,請將答案標記爲「已接受」 – karthikr

+0

set.intersection實際上不起作用,順便說一句 - 相交不會檢查子字符串。 –

相關問題