Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
4 / 4 / 2
Регистрация: 07.05.2014
Сообщений: 489

считать таблицу

29.11.2016, 20:50. Показов 4522. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте, нужна помощь. Есть документ. Структура документа следующая: блок пронумерованных абзацей(их может быть любое количество) после которого следует таблица и так много раз. Необходимо по номеру абзаца заходить в соответствующий стб таблицы и брать информацию. необходимо к абзацам дописать данные из таблицы
Вложения
Тип файла: doc пример.doc (40.0 Кб, 7 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.11.2016, 20:50
Ответы с готовыми решениями:

Считать и вывести таблицу - 3
Напишите программу, которая сначала считывает элементы таблицы один за другим, затем выводит их в виде таблицы. Не используйте...

Считать и вывести таблицу
Напишите программу, которая сначала считывает элементы таблицы один за другим, затем выводит их в виде таблицы. Формат ввода На...

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

27
4 / 4 / 2
Регистрация: 07.05.2014
Сообщений: 489
02.12.2016, 22:21  [ТС]
Может кто знает как это сделать?
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
02.12.2016, 23:47
документ именно doc или docx?
0
4 / 4 / 2
Регистрация: 07.05.2014
Сообщений: 489
02.12.2016, 23:54  [ТС]
docx. Я думаю может все в текстовый файл преобразовать, но как быть с таблицыми.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
02.12.2016, 23:55
а приложили Вы doc

Добавлено через 13 секунд
так все же - doc или docx?
1
4 / 4 / 2
Регистрация: 07.05.2014
Сообщений: 489
03.12.2016, 00:00  [ТС]
Извините, правда попутал.
Вложения
Тип файла: docx пример.docx (16.6 Кб, 6 просмотров)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
03.12.2016, 00:20
вообще не понятно что куда надо дописать
0
4 / 4 / 2
Регистрация: 07.05.2014
Сообщений: 489
03.12.2016, 00:27  [ТС]
Вот например, у нас 10. Пункт в таблице нужно найти число 10 и дописать в этот пункт данные с первого столбца, где в столбце под числом 10 стоят цифры.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
03.12.2016, 00:29
сделайте вручную первую таблицу, а то все равно как-то не стало яснее
0
4 / 4 / 2
Регистрация: 07.05.2014
Сообщений: 489
03.12.2016, 00:39  [ТС]
Вот как должно получиться

10. Повышение квалификации. Формализованные модели. Институт.
Код потока – 1234. Начало занятий – 25.11.2016. 1 Отделение России - 1. Итого - 1
для 12
12. Повышение квалификации. Формализованные диваны. Институт.
Код потока – 1234. Начало занятий – 25.11.2016. 1 Отделение России – 2. 2 Отделение России – 4. Итого-6
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
03.12.2016, 00:43
Rodmistar, сделайте, пожалуйста как должно быть не для абстрактного 10, а для данных, которые уже есть в документе, который Вы приложили.

Добавлено через 1 минуту
для первого текста и таблицы
0
4 / 4 / 2
Регистрация: 07.05.2014
Сообщений: 489
03.12.2016, 00:46  [ТС]
Так я как раз брал эти данные из этого документа. Тут есть один нюанс, нужно взять число 10(то есть пункт), и найти по нем в таблице отделения и количетсво выделенных мест для этого пункта.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
03.12.2016, 00:51
у меня в документе нет пункта 10

Добавлено через 26 секунд
1-6 в первом наборе параграфов и 1-5 во втором

Добавлено через 2 минуты
а, вы вообще не тот документ сначала приложили, я подумал, что Вы просто расширение изменили и заново прикрепили
0
4 / 4 / 2
Регистрация: 07.05.2014
Сообщений: 489
03.12.2016, 00:58  [ТС]
5. Повышение квалификации. Формализованные модели. Академия.
Код потока – 1234. Начало занятий – 25.11.2016. 1 Отделение России - 1.
2 Отделение России - 1. Итого - 2.

Добавлено через 15 секунд
Да, извините все попутал.
0
4 / 4 / 2
Регистрация: 07.05.2014
Сообщений: 489
03.12.2016, 01:06  [ТС]
вот
Вложения
Тип файла: docx пример (5)1.docx (17.7 Кб, 2 просмотров)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
03.12.2016, 02:04
там действительно у некоторых пунктов списка нет кода потока и начала занятий или это так накопипастилось?
если действительно, то как текст из таблицы должен быть вставлен?
0
4 / 4 / 2
Регистрация: 07.05.2014
Сообщений: 489
03.12.2016, 02:11  [ТС]
Должны быть у всех.
Вложения
Тип файла: docx пример (5)1 (1).docx (17.5 Кб, 8 просмотров)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
03.12.2016, 04:30
в конечном вариант таблицы тоже нужны или только текст?

Добавлено через 49 минут
вот такой монстр получился, я это больше видеть не желаю)))

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
from collections import OrderedDict
import re
 
import docx
from docx.document import Document
from docx.oxml.table import CT_Tbl
from docx.oxml.text.paragraph import CT_P
from docx.table import _Cell, Table, WD_STYLE_TYPE
from docx.text.paragraph import Paragraph
 
 
def iter_block_items(parent):
    """Iterates document objects"""
    if isinstance(parent, Document):
        parent_elm = parent.element.body
    elif isinstance(parent, _Cell):
        parent_elm = parent._tc
    else:
        raise ValueError("something's not right")
 
    for child in parent_elm.iterchildren():
        if isinstance(child, CT_P):
            yield Paragraph(child, parent)
        elif isinstance(child, CT_Tbl):
            yield Table(child, parent)
 
 
def parse_table(t):
    """returns values from the table"""
    result = {}
    items = [c.cells[0].text for c in [i for i in t.rows][2:]]
    columns = [col for col in t.columns][1:]
 
    for c in columns:
        d = OrderedDict(zip(items, [c.text for c in c.cells[2:]]))
        x = '. '.join([element + ' - ' + d[element] for element in d if d[element] != '-'])
        result[c.cells[1].text] = x
    return result
 
 
doc = docx.Document('/Users/jabbson/Downloads/пример.docx')
 
parts = [block for block in iter_block_items(doc)]
parts_separated = []
temps_items = []
 
# creating list of sections
for part in parts:
    if isinstance(part, docx.text.paragraph.Paragraph):
        temps_items.append(part)
    elif isinstance(part, docx.table.Table):
        pt = parse_table(part)
 
        temps_items.append((part, pt))
        parts_separated.append(temps_items)
        temps_items = []
 
# appending values from table
for i_x, x in enumerate(parts_separated):
    parags = x[:-1]
    pt = x[-1][1]
 
    for i_para, p in enumerate(parags):
        if re.match(r'\d+\.', p.text):
            num = re.search('\d+', p.text).group(0)
            parts_separated[i_x][i_para + 1].text += ' ' + pt[str(num)]
 
# creating new document
document = docx.Document()
 
for e1 in parts_separated:
    for e2 in e1:
        if isinstance(e2, docx.text.paragraph.Paragraph):
            document.add_paragraph(e2.text)
        elif isinstance(e2, tuple):
            table = document.add_table(rows=len(e2[0].rows), cols=len(e2[0].columns), style="Table Grid")
 
            for ir, row in enumerate(table.rows):
                row_cells = row.cells
                for ic, cell in enumerate(row_cells):
                    cell.text = e2[0].rows[ir].cells[ic].text
 
            # merging cells
            row = table.rows[0]
            a, *b = row.cells[1:]
            text = a.text
            for c in b:
                a.merge(c)
            a.text = text
 
            col = table.columns[0]
            a, b = col.cells[:2]
            text = a.text
            a.merge(b)
            a.text = text
 
document.save('KakJeMenyaEtoZadralo.docx')
1
4 / 4 / 2
Регистрация: 07.05.2014
Сообщений: 489
04.12.2016, 02:23  [ТС]
, спасибо.

Добавлено через 18 часов 26 минут
Python
1
2
3
4
5
6
7
8
# -*- coding: utf-8 -*
import docx
 
doc = docx.Document('razna.docx')
tabl = doc.tables
document = docx.Document()
 
document.save('table.docx')
А как передать все таблицы из одного документа во второй?Думал через add_tables, но это не правильно.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
04.12.2016, 02:25
создать таблицу такой же размерности и в цикле переносить по ячейке.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.12.2016, 02:25
Помогаю со студенческими работами здесь

Считать и вывести таблицу
Напишите программу, которая сначала считывает элементы таблицы один за другим, затем выводит их в виде таблицы. Формат ввода На...

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

Считать и вывести таблицу — 2
Напишите программу, которая сначала считывает элементы таблицы один за другим, затем выводит их в виде таблицы, затем выводит пустую...

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

Как считать числа с файла в таблицу
Подскажите, пожалуйста, как прописать в коде чтобы для значений х х1 х2 выводились числа, записанные в файле , а для у,у1,у2 числа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru