2015-10-20 156 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实际上不起作用,顺便说一句 - 相交不会检查子字符串。 –

相关问题