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

Парсинг разделенного tab-ами документа в таблицу Word-а

25.10.2018, 19:34. Показов 2947. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно распарсить тесктовый документ с разделителем tab в таблицу ворда.

тесктовый документ
Кликните здесь для просмотра всего текста

C
1
2
3
4
5
6
7
8
9
10
 
                                                     
№ Част.МГц Есш.дБ Еш.дБ ПП.кГц   Погр.пр.дБ Погр.ант.дБ
1   241.500000  24.34   23.74   100.000 2.00    2.00
2   483.000000  25.42   23.66   100.000 2.00    2.00
3   724.500000  18.24   17.01   100.000 2.00    2.00
4   966.000000  18.94   12.90   100.000 2.00    2.00
5   1449.000000 17.60   12.18   100.000 2.00    2.00
6   1690.500000 13.56   12.30   100.000 2.00    2.00
7   1932.000000 12.60   12.30   100.000 2.00    2.00

пробывал так
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
mport docx
import pandas as pd
 
csv_delimiter='\t'
doc = docx.Document()
 
#create pandas DataFrame from .csv with selected columns.
filtered_csv_df = pd.read_csv('2222.csv',sep=csv_delimiter, usecols=['Част.МГц', 'Есш.дБ', 'Еш.дБ'], dtype=str)
#create a list of column's values
csv_columns = filtered_csv_df.columns.values.tolist()
 
table = doc.add_table(rows=2, cols=len(csv_columns), style="Table Grid")
hdr_cells = table.rows[0].cells
 
#set headers valuse for docx table
for i in range(len(csv_columns)):
    hdr_cells[i].text = csv_columns[i]
 
#set cells values for docx table
for df_row in range(len(filtered_csv_df.index)):
    row_cells = table.add_row().cells
    for column in range(len(csv_columns)):
        print(type(filtered_csv_df.loc[df_row][column]))
        row_cells[column].text = filtered_csv_df.loc[df_row][column]
doc.add_page_break()
doc.save("data.docx")
но панда не видет колонок помогите исправить.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.10.2018, 19:34
Ответы с готовыми решениями:

Добавление срок в таблицу Word при заполнении документа Word из данных Excel
Всем привет! Я новичок в этом деле и нужна помощь. Есть таблица Excel с данными на основании которого заполняется документ Word по...

Парсинг документа Word
Здравствуйте, есть вопрос по "разборке" документа Word, мне нужно вытащить с него некоторые слова. Пример: "Код по МКБ-10: I70 ...

Парсинг документа word с таблицами - перевод в эксель
Ни в коем случае не прошу делать все за меня, просто прошу направить на путь истинный (не в гугл и не в баню, а к офисному комунизму :p) ...

11
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
25.10.2018, 20:08
Прикрепите текстовый документ
0
4 / 3 / 1
Регистрация: 25.10.2018
Сообщений: 21
25.10.2018, 20:10  [ТС]
вот
Вложения
Тип файла: rar 2222 — копия.rar (316 байт, 4 просмотров)
0
4 / 3 / 1
Регистрация: 25.10.2018
Сообщений: 21
25.10.2018, 21:37  [ТС]
Цитата Сообщение от ТабуретY Посмотреть сообщение
Прикрепите текстовый документ
прикрепил
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
25.10.2018, 21:48
У вас csv файл очень плохо сделан
Во-первых разделитель у вас указан таб, а в файле пробелы, причем разное количество
Во-вторых, первая строка в файле забита пробелами, а эта вот строка в скрипте

Python
1
csv_columns = filtered_csv_df.columns.values.tolist()
Пытается вытащить заголовки из первой строки и ничего не находит
В общем, поправьте cvs
0
4 / 3 / 1
Регистрация: 25.10.2018
Сообщений: 21
26.10.2018, 01:37  [ТС]
Цитата Сообщение от ТабуретY Посмотреть сообщение
В общем, поправьте cvs
поправил csv. ошибка не поменялась.
Миниатюры
Парсинг разделенного tab-ами документа в таблицу Word-а  
Вложения
Тип файла: rar 22222.rar (275 байт, 1 просмотров)
0
4 / 3 / 1
Регистрация: 25.10.2018
Сообщений: 21
26.10.2018, 01:56  [ТС]
Цитата Сообщение от ТабуретY Посмотреть сообщение
В общем, поправьте cvs
еще раз поправил,почти получилось.
не понял откуда две лишние строки в таблице.

и есть вопрос: как обрезать значения до одной цифры после запятой в столбце Част.МГц?

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
import docx
import pandas as pd
 
 
csv_delimiter='\t'
doc = docx.Document()
 
#create pandas DataFrame from .csv with selected columns.
filtered_csv_df = pd.read_csv('2222.csv',sep=csv_delimiter,skiprows=(1),usecols=['Част.МГц', 'Есш.дБ', 'Еш.дБ'], dtype=str, header=0)
#create a list of column's values
csv_columns = filtered_csv_df.columns.values.tolist()
 
table = doc.add_table(rows=3, cols=len(csv_columns), style="Table Grid")
hdr_cells = table.rows[0].cells
 
#set headers valuse for docx table
for i in range(len(csv_columns)):
    hdr_cells[i].text = csv_columns[i]
 
#set cells values for docx table
for df_row in range(len(filtered_csv_df.index)):
    row_cells = table.add_row().cells
    for column in range(len(csv_columns)):
        print(type(filtered_csv_df.loc[df_row][column]))
        row_cells[column].text = filtered_csv_df.loc[df_row][column]
 
doc.add_page_break()
doc.save("data.docx")
Миниатюры
Парсинг разделенного tab-ами документа в таблицу Word-а  
Вложения
Тип файла: rar 2222.rar (282 байт, 1 просмотров)
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
26.10.2018, 02:51
Лучший ответ Сообщение было отмечено Qvazgen как решение

Решение

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
csv_delimiter='\t'
doc = docx.Document()
 
usecols = ['Част.МГц', 'Есш.дБ', 'Еш.дБ'] 
#create pandas DataFrame from .csv with selected columns.
df = pd.read_csv(
    '2222.csv',
    sep=csv_delimiter,
    #names=names,
    usecols=usecols, 
    dtype=str
    )
 
print(df)
 
t = doc.add_table(rows=df.shape[0]+1, cols=df.shape[1],style="Table Grid" )
 
# add the header rows.
for j in range(df.shape[-1]):
    t.cell(0,j).text = df.columns[j]
 
# add the rest of the data frame
for i in range(df.shape[0]):
    for j in range(df.shape[-1]):
        t.cell(i+1,j).text = str(df.values[i,j])
 
doc.add_page_break()
doc.save("data.docx")
Правильный tcv файл.
2222.rar
docx как результат
data.rar
2
4 / 3 / 1
Регистрация: 25.10.2018
Сообщений: 21
26.10.2018, 09:14  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Правильный tcv файл.
от пробелов в начале не избавится, он генерируется другим ПО.
В начале мой косяк был из-за того что его открывали другим редактором, который поменял табы на пробелы, а я этого не заметил.
0
4 / 3 / 1
Регистрация: 25.10.2018
Сообщений: 21
28.10.2018, 13:30  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
docx как результат
а не подскажешь как в первой колонке обрезать значения до 1го знака после запятой?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
28.10.2018, 13:56
Не надо ничего обрезать - просто измените тип данных: dtype=float в read_csv (у вас же там везде цифры) и у вас все значения будут типа float и разрядов после запятой будет ровно столько, сколько является значимым.
Если же данные не только цифровые - тогда только вручную преобразовывать в цикле значения из нужной колонки round'ом.

Цитата Сообщение от Qvazgen Посмотреть сообщение
его открывали другим редактором, который поменял табы на пробелы
Да, есть такое - у меня у самого редактор точно также настроен. Поэтому для таких файлов лучше использовать разделителем точку с запятой.
1
4 / 3 / 1
Регистрация: 25.10.2018
Сообщений: 21
28.10.2018, 14:01  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Не надо ничего обрезать - просто измените тип данных: dtype=float в read_csv и у вас все значения будут типа float и разрядов после запятой будет ровно столько, сколько является значимым.
Сообщение от Qvazgen
его открывали другим редактором, который поменял табы на пробелы
Да, есть такое - у меня у самого редактор точно также настроен. Поэтому для таких файлов лучше использовать разделителем точку с запятой.
Вот я тормоз
а формат файла к сожалению выбирал не я.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.10.2018, 14:01
Помогаю со студенческими работами здесь

вставка в закладки в таблицу документа Word
шаблон документа ворд выглядит так(картинка) мне нужно вставлять значения на место "блабла" и чисел пунктов может быть любое...

Загрузить таблицу из документа Word в консоль
Есть уже созданный Вордовский документ с заполненной таблице. Мне нужно отобразить эту таблицу в консоли Си Шарп. Как это сделать ? Мне...

Как сделать переключение между Edit'ами через Tab
Задачка такова, есть программа на главном окне 2 button, 3 edit, 1 list, 5 static. Как сделать переключение по нажатию Tab между button,...

Импортировать записи из DataGridView в таблицу документа Word
Помогите пожалуйста необходимо содержимое из datagridview записать в таблицу Word причем таблица будет создаваться автоматически. Нужна...

Поместить в область макета таблицу из документа Word
Здравствуйте Делаю внешнюю печатную форму для документа "Отпуск" 1С ЗУП 3.1. Форма должна выглядеть как бланк предприятия. На бланке есть...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru