我正在处理几个包含unicode值的列表。我在比较一个列表中的值以查看这些值是否存在于第二个列表中。然后我尝试从第二个列表中获取匹配值并将它们放在第三个列表中。当我尝试打印第三个列表时,它返回“无”#39;。我错过了什么?非常感谢您的反馈!
# -*- 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
答案 0 :(得分: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循环。