#python-3.x
Вопрос:
Я пытаюсь удалить набор кавычек вокруг строковых элементов в списке, но вижу, что возникла ошибка. Кажется, я отчетливо помню, как выполнял эту операцию раньше, но, к счастью, я не смог найти предыдущий проект кода, в котором я сделал это бегло. Вот мой код:
result = cur.fetchall() # result = (1, 2, 3,) or result = ((1, 3), (4, 5),) result = [list(item) for item in result] final_result = [item.strip("'", "") for item in result] except (Exception, psycopg2.DatabaseError) as error: print(error) finally: if conn is not None: conn.close() return final_result
Результатом этого кода является: объект «список» не имеет атрибута «полоса»
Я также попытался .strip (), но возникла ошибка того же типа. Я что-то упускаю/забываю нюанс python 3.x?
Комментарии:
1. Также добавляя, что я попытался решить проблему с помощью .join (), чтобы отправить его обратно в строку, затем в той же операции вернуться в список с удалением символов, и вот, возникла ошибка того же типа. Я довольно хорошо разбираюсь в Python, так что я немного заблудился в этом вопросе.
2. в списках нет атрибута strip, что означает, что вы не можете вызывать
.strip()
список, и вы определяете каждый элементresult
как список. Так может быть, попробуем[[elem.strip("'") for elem in item] for item in result]
?
Ответ №1:
В случае, если вы начнете с result = ((1, 3), (4, 5),)
того, что указано в комментарии, после:
result = [list(item) for item in result]
result
будет список списков:
[[1, 3], [4, 5]]
При вычислении final_result
вы повторяете этот список списков и применяете strip
его к элементу (который является списком), поэтому появляется ошибка:
AttributeError: 'list' object has no attribute 'strip'
Комментарии:
1. Спасибо тебе, Дэн. Да, я, наконец, осознал свою ошибку и переключился на оператор понимания вложенного списка, который отлично работал. По какой-то причине я не понял, что вложил список в эту строку.