我需要删除mylist上的\ r \ n。
print mylist
>>> [1, '\r\nabc Fa 153 M Wa 3\r\n']
我做了
lst = [txt.replace("\r\n", "") for txt in mylist]
但我得到以下错误
AttributeError: 'int' object has no attribute 'replace'
答案 0 :(得分:4)
您可以使用三元表达式跳过尝试replace
任何不属于字符串的内容。
lst = [txt.replace("\r\n", "") if isinstance(txt, str) else txt for txt in mylist]
答案 1 :(得分:1)
您可以从开头和结尾剥离数据:
l = [1, '\r\nabc Fa 153 M Wa 3\r\n']
print([x.strip() if isinstance(x, basestring ) else x for x in l ])
[1, 'abc Fa 153 M Wa 3']
如果可能的话,更好的解决方案是在将行添加到列表之前进行剥离。
答案 2 :(得分:0)
您的第一项是int
,第二项是str
。如果要混合使用各种类型,可以在列表推导中使用str.strip()
来处理剥离字符串。
>>> mylist = [1, '\r\nabc Fa 153 M Wa 3\r\n']
>>> mylist = [i.strip() if isinstance(i, basestring) else i for i in mylist]
>>> mylist
[1, 'abc Fa 153 M Wa 3']