' NoneType'对象没有属性'替换'在Python列表中理解

时间:2015-07-20 10:33:58

标签: json list python-2.7 dictionary nonetype

我有以下字典......

mydict = {'columns': ['col1', 'col2', 'col3'],
          'rows': [['col1', 'col2', 'col3'],
                   ['testing data 1', 'testing data 2lk\nIdrjy9dyj', 'testing data 3'],
                   ['testing data 2', 'testing data 3', 'testing data 4'],
                   ['testing data 3', 'testing data 4', 'testing data 5']]}

我正在使用以下列表理解来将回车"\n"替换为此"<br>"。它工作正常,除非它在读取json文件时传递一个空字符串。然后它抛出错误'NoneType' object has no attribute 'replace'。我只是不知道如何在列表理解中添加if is not none语句。任何帮助非常感谢..

for items in mydict['rows']:
        mydict['rows'][i] = [item.replace("\n","<br>") for item in items]
        i += 1

1 个答案:

答案 0 :(得分:2)

你可以在这里使用一个布尔表达式:

[item and item.replace("\n","<br>") for item in items]

如果item.replace()被视为真,则仅调用item; None和空字符串都被视为false。

如果你想过滤掉任何None项,你可以在列表理解中添加一个测试:

[item.replace("\n","<br>") for item in items if item is not None]

删除None值或

[item.replace("\n","<br>") for item in items if item]

仅保留非空值。