Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Текст в виде колонок, Запись списка в файл в виде колонок 
:(
    Опции темы
KelmDmitry
  Дата 5.2.2011, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.2.2011

Репутация: нет
Всего: нет



Есть некий список  со словами. Слова в нем разной длины.
Его надо записать в файл в виде колонок, по 5 слов в каждой. Расстояние между колонками должно быть одинаково.

Пример.
Код

templist = ['1. Петя','2. Сергей ','3. Яга','4. Сер','5. Ольга','6. Саша','','7. Оптимус',' 8. Мегатрон', и т.д.]


Что получается сейчас.
1. Петя  6. Саша
2. Сергей  7. Оптимус
3. Яга  8. Мегатрон
4. Сер
5. Ольга

А нужно  чтобы стало:
  • 1. Петя        6. Саша             11.
  • 2. Сергей    7. Оптимус        12
  • 3. Яга          8. Мегатрон      13
  • 4. Сер         9.                       14
  • 5. Ольга      10.                     15. И тд.



Рабочий кусок кода
Код

for n in range(5):
    linelist = []
    for n in templist[n:len(templist):5]:
        w.write(n + '   ')  
        linelist.append(n)
    # print linelist
    w.write('\n')


Пока писал проблему додумался до одного  решения. Но возможно ваш вариант будет более оптимален.
Заранее благодарю. 
PM MAIL   Вверх
rsm
Дата 6.2.2011, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Что-то навроде:

Код

# -*- coding: utf8 -*-

from __future__ import print_function
from random import randint


def make_table(table, cols):

    # считаем длину самой длинной строки
    # чтобы потом красиво отформатировать по левому краю
    #
    max_len = len(max(table, key=len))

    # выбираем из списка строки по cols элементов
    #
    for row in map(None, *([iter(table)] * cols)):

        # слева направо по строке
        #
        for cell in row:

            # непременно проверка, т.к. в последней строке несколько
            # ячеек будут пустыми
            #
            if cell is not None:

                # красиво форматируем по левому краю,
                # разделяя столбцы табуляцией
                #
                print("{:<{:}}".format(cell, max_len), end='\t')

        # перевод строки таблицы
        #
        print()


def main():

    # новый список, будет таблицей
    #
    table = []

    # число колонок
    #
    cols = randint(2, 5)

    # заполняем произвольным бредом
    #
    for i in range(randint(cols, 100)):
        table.append("{:03d}. {:}".format(i + 1, "nya" * randint(1, 5)))

    # на печать
    #
    make_table(table, cols)


if __name__ == "__main__":
    main()

Таблица форматируется слева направо сверху вниз. Пофикси как требуется.

P.S. На будущее: для подобных тем есть специальный раздел "Центр помощи" smile
PM MAIL   Вверх
KelmDmitry
Дата 7.2.2011, 04:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.2.2011

Репутация: нет
Всего: нет



К сожалению у меня нет 100 постов чтоб поставить +, поэтому лишь Большое спасибо!
Прочитав ваш код, не понял а  зачем вы импортируете print_function?
Про раздел помощи  спасибо, я его при просмотре форума даже и не заметил.
PM MAIL   Вверх
KelmDmitry
Дата 8.2.2011, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.2.2011

Репутация: нет
Всего: нет



А на форуме есть раздел с книгами на  Питоне? 
То есть где перечислены все достойные книги для изучения. А то что-то найти не могу.
PM MAIL   Вверх
rsm
Дата 9.2.2011, 20:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Цитата(KelmDmitry @  7.2.2011,  06:31 Найти цитируемый пост)
зачем вы импортируете print_function?

Чтобы print была функцией, а не оператором (подробнее тут).

Цитата(KelmDmitry @  8.2.2011,  19:18 Найти цитируемый пост)
А на форуме есть раздел с книгами на  Питоне?

В самой непосредственной близости. Есть также специальная тема - ссылки в ней давно померли, но названия книг не изменились.
PM MAIL   Вверх
KelmDmitry
Дата 9.2.2011, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.2.2011

Репутация: нет
Всего: нет



Спасибо, правда уважаемый rsm складывается ощущение что нас но форуме только двое ^^
PM MAIL   Вверх
rsm
Дата 10.2.2011, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Это бывает... smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.