2015-07-20 61 views
1

沒有屬性「取代」我有folllowing字典...「NoneType」對象在Python列表理解

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']]} 

,我使用了下面的列表理解來代替這個"<br>"回車"\n"。它工作正常,除非它傳遞一個空字符串,因爲它正在讀取一個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 

回答

2

你可以只使用一個布爾表達式在這裏:

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

如果item被認爲是真,這只是調用item.replace(); None和一個空字符串都被認爲是錯誤的。

如果你想過濾掉任何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] 

只保留非空值。

+0

這是光滑的!謝謝 – whoopididoo

相關問題