【问题标题】:Python 2.7 - Adding unicode strings to listPython 2.7 - 将 unicode 字符串添加到列表
【发布时间】:2015-10-20 13:42:34
【问题描述】:

我正在处理几个包含 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

【问题讨论】:

    标签: python list unicode


    【解决方案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 循环。

    【讨论】:

    • set.intersection 实际上不起作用,顺便说一句—— intersect 不会检查子字符串。
    猜你喜欢
    • 2012-09-14
    • 1970-01-01
    • 2016-02-29
    • 2023-02-15
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    相关资源
    最近更新 更多