Python: «List.append =« список »атрибут объекта« приложение »только для чтения» - PullRequest
6 голосов
/ 20 февраля 2012

Я пытаюсь записать ответ с сервера Solr в файл CSV.Я довольно новичок в Python и получил код для изменения.Первоначально код выглядел следующим образом ...

for doc in response.results:
    status = json.loads(doc['status'])

Сценарий запускается и печатает правильную информацию.Но это только каждый печатает один результат (последний).Я думаю, это потому, что цикл постоянно записывает переменную «status», пока не сработает через ответ.

После некоторого чтения я решил сохранить информацию в списке.Таким образом, я мог бы распечатать информацию, чтобы разделить строки в списке.Я создал пустой список и изменил код ниже -

for doc in response.results:
    list.append = json.loads(doc['status'])

Я получил этот ответ после попытки запустить код -

`AttributeError: 'list' object attribute 'append' is read-only`.

Куда я иду не так?Разве список не лучший подход?

Ответы [ 3 ]

7 голосов
/ 20 февраля 2012
>>> list.append
<method 'append' of 'list' objects>

Вы пытаетесь изменить метод append встроенного list класса!

Просто выполните

docstats = []
for doc in response.results:
    docstats.append(json.loads(doc['status']))

или эквивалентно:

docstats = [json.loads(doc['status']) for doc in response.results]
1 голос
/ 20 февраля 2012

Я не уверен, что вы пытаетесь сделать.

Полагаю, вы не создали переменную list.list - это встроенный класс Python для списков, поэтому, если нет переменной для маскировки, вы получите к ней доступ.И вы пытались изменить одно из его свойств, что недопустимо (это не то же самое, что ruby, где вы можете сделать мартышку-патч).

Это то, что вы хотите?:

l=[]
for doc in response.results:
    l.append(json.loads(doc[‘status’]))
0 голосов
/ 20 февраля 2012

Попробуйте

list.append(json.loads(doc['status']))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...