Задать вопрос
@SITihomirov
Art of gamedev

Не могу передать строку в writerow, что не так?

Консоль выкидывает ошибку TypeError: string indices must be integers, при попытке передачи построчно
for i in range(j, len(property)):
  k = j
  write_to_csv(property[k])
  k += 1
j = len(property)

Полный текст ошибки :
Traceback (most recent call last):
File "C:/Users/Danis/PycharmProjects/parser/parser_cian.py", line 116, in
get_offices(url)
File "C:/Users/Danis/PycharmProjects/parser/parser_cian.py", line 71, in get_offices
write_to_csv(property[k])
File "C:/Users/Danis/PycharmProjects/parser/parser_cian.py", line 82, in write_to_csv
a_pan.writerow((building['адрес'], building['площадь'], building['цена'], building['цена за м²'],
TypeError: string indices must be integers

def write_to_csv(property):
    with open('cian_parser.csv', 'a', encoding='utf8', newline='') as file:
        a_pan = csv.writer(file, delimiter=',')
        for building in property:
            a_pan.writerow((building['адрес'], building['площадь'], building['цена'], building['цена за м²'],
                            building['ссылка'], building['дата выгрузки']))
    read_file = pd.read_csv(r'cian_parser.csv')
    read_file.to_excel(r'cian_parser.xlsx', index=None, header=True)
  • Вопрос задан
  • 89 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 1
@SITihomirov Автор вопроса
Art of gamedev
Разобрался, цикл был не нужен.
Меняем
def write_to_csv(property):
    with open('cian_parser.csv', 'a', encoding='utf8', newline='') as file:
     #...

на
def write_to_csv(property):
    with open('cian_parser.csv', 'w', encoding='utf8', newline='') as file:
    #...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Вот это кошмар...
Нагромождение каких-то ненужных приседаний и реверансов. Склажывается ощущение. что код писался вообще без понимания что и как работает.
Тут проще пересчитать строки, которые не требовалось бы исправить: ноль таких строк.
Вы бы привели хоть пример что у вас там в property подается. А-то на кофейной гуще гадать приходится какая из сотни ошибок-таки окончательно стедала неработоспособным код.

Вот здесь вообще какая-то ерунда:
for i in range(j, len(property)):
    k = j
    write_to_csv(property[k])
    k += 1
  j = len(property)

Ладно, с отступами беда. Но зачем эти бессмысленные присвоения? Зачем этот бессмысленный цикл, если вы в нем обрабатываете один и тот же элемент много раз?
Прекращайте уже такое писать. Смысла нет. Не ваше.

Похоже (разводы гущи так подсказывают за неимением других данных) вы не понимаете что передаёте в эту свою функцию. Ситуацию бы прояснила публикаия содержимого переменной roperty
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽