Python 2.7错误:'tuple'对象没有属性'replace'

时间:2015-07-14 20:13:41

标签: python dictionary tuples str-replace

我有这样的字典......

 mydict = {"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"]], 
           "columns": ["col1", "col2", "col3"]}

我正在尝试用html \n替换回车<br>。 这是我得到的错误:

  

错误:'tuple'对象没有属性'replace'

这是我正在努力工作的代码......如果有人可以提供帮助,我将非常感激。

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

4 个答案:

答案 0 :(得分:2)

您可以使用以下代码将'\n'替换为字符串中的'<br>'

for index, sublist in enumerate(mydict['rows']):
    mydict['rows'][index] = [s.replace('\n', '<br>') for s in sublist]

结果

>>> mydict
{'columns': ['col1', 'col2', 'col3'],
 'rows': [['col1', 'col2', 'col3'], ['testing data 1', 'testing data 2lk<br>Idrjy9dyj', 'testing data 3'], ['testing data 2', 'testing data 3', 'testing data 4'], ['testing data 3', 'testing data 4', 'testing data 5']]}

答案 1 :(得分:1)

问题是replace是字符串上的一个方法,你想在每个字符串上调用它,但是现在你在集合本身上调用它。您真的想在items中的每个字符串上调用替换,您可以使用list comprehension

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

您也可以使用另一个for循环而不是列表理解来完成此操作,但理解很酷且值得了解。

答案 2 :(得分:0)

您可以使用嵌套列表推导进行替换。

// This will save state.
@ Override
onSaveInstanceState(Bundle bun){
super.onSaveInstanceState(bun);
bun.putInt("pos",currentImage);
}



//To restore state 
@Override
OnRestoreInstaneState(Bundle bun){
currentImage = bun.getInt("pos");
// set current image as pos in adapter
}

答案 3 :(得分:-2)

items是一个元组。

尝试:

print(type(items))  

因为我用脚本得到的错误是:

  

AttributeError:&#39; list&#39;对象没有属性&#39;替换&#39;

然后尝试打印items