Ответы пользователя по тегу CSV
  • Как определить символ(ы) конца строки в csv?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Зачем?!
    Это не конец строки, это просто пустые столбцы. Конец строки там по абзацу. Зачем вообще вам нужно указывать конец строки как-то особенно? Вы можете потом просто отбросить нужное число элементов из кортежа и всё.
    Ответ написан
    2 комментария
  • Как посчитать количество суб-объектов в Python для каждого XML-объекта?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Вы можете сделать это за два прохода.
    На первом проходе просто собираете множество всех возможных уникальных тегов. Я бы просто записывал в словарь True по ключу, равному имени каждого попавшегося тега на первом проходе.
    В результате вы получите словарь уникальными именами в ключах, причем эти ключи будут в том порядке, в каком они встречались в XML (иногда это просто удобно, что они не в рандомном порядке).
    Имея общий набор имён вы можете воспользоваться стандартным способом записи в CSV в виде словарей.
    Останется лишь конвертировать каждый узел из вашего файла в словарь. Никаких сторонних библиотек не нужно.
    Ответ написан
    1 комментарий
  • Как получить данным со строчки CSV-файла, а затем записать определенный текстовый результат в эту же строку?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    pandas не нужен.
    import sys 
    with open('tmp/new.csv') as fin: 
        w = csv.writer(sys.stdout) 
        for row in csv.reader(fin): 
            x = row[-1] 
            x2 = x*2 
            row.append(x2) 
            w.writerows([row])
    Ответ написан
    Комментировать
  • Как сделать, чтобы при записи в csv файл числа были числовыми, а не датами?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Вы самое главное упустили. В виде дат эти строки выглядят в экселе, а CSV тут ни при чем. Это простой текстовый формат и в нем нельзя указать тип данных ячейки.
    Вам в соседнем ответе уже порекомендовали настроить тип данных ячеек в экселе. Это именно его, экселевская, проблема. Слишком "умный".

    Однако есть и своеобразный лайфхак. Чтобы десятичные дробные числа не воспринимались экселем как даты, можно сделать их на даты непохожими. Сделать это можно дописав справа в дробной части нули. Можно даже потоковый конвертер сделать, который будет все дробные числа форматировать нулями до, скажем, шести знаков после запятой. Это незначащие нули и на числовые данные они не повлияют, зато эксель не будет их датой показывать.

    Ещё причина, по которой эксель может не распознать число - это десятичный разделитель, который определяется локалью и в одних странах его принято делать точкой, в других запятой. Это вносит неразбериху. Если наверняка знаете под какую локаль делаете файл, то можете подставить нужный разделитель. Если нет -- используйте точку.
    Ответ написан
    Комментировать