Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Конвертация txt таблицы в html (https://javascript.ru/forum/misc/2559-konvertaciya-txt-tablicy-v-html.html)

ZoNT 16.01.2009 17:49

1^первое слово^^^^^^^^^^^^^^^^^второе недослово^просто_слово
2^хрен^^^^^^^^^^^^^^^^^^^^^^^в^^^^^^^^^^^ба ночке
3^ну и тут тоже какая-то фигня написана^2^^^^^^^^^^^3

Так понятнее?

x-yuri 16.01.2009 17:50

Цитата:

Это пример, если ты его не можешь распарсить, то какие вопросы?
ZoNT, это не таблица

x-yuri 16.01.2009 17:51

ZoNT, вот тот вариант, который привел я замечательно парсится, алгоритм Kolyaj тебе приводил, или тебе код написать надо?

ZoNT 16.01.2009 17:51

Цитата:

Сообщение от Kolyaj
Мне не нужен заголовок, мне контент нужен, в котором хотя бы человек поймет, что там столбцы

Если человек поймёт, то и не стоял бы вопрос у топикстартера как распарсить вывод в таблицу...

ZoNT 16.01.2009 17:52

б**, вы первый пост в теме смотрели?

ZoNT 16.01.2009 17:52

Цитата:

Сообщение от gaiver
83 81 1 10o REPLY 66 276K /usr/local/apache/bin/httpd start
5280 81 1 10o WAIT -1 28K /bin/sh -c ps
5282 81 1 10o REPLY 1 24K ps

Это не таблица???

x-yuri 16.01.2009 17:54

Цитата:

Сообщение от ZoNT (Сообщение 10879)
Если человек поймёт, то и не стоял бы вопрос у топикстартера как распарсить вывод в таблицу...

у топикстартера стоял вопрос как распарсить таблицу. И это не таблица. В таком виде она потому, что в html сосдение пробелы в один объединяются ;-)
p.s. не кипятись так

ZoNT 16.01.2009 18:00

Прочитай, пожалуйста, ещё раз первый пост, толкьо медленно и вдумчиво... Ну и попробуй включить телепатические способности...

Kolyaj 16.01.2009 18:01

Цитата:

Сообщение от ZoNT
1^первое слово^^^^^^^^^^^^^^^^^второе недослово^просто_слово
2^хрен^^^^^^^^^^^^^^^^^^^^^^^в^^^^^^^^^^^ба ночке
3^ну и тут тоже какая-то фигня написана^2^^^^^^^^^^^3

Уже лучше.

Смотрим первую строчку. Пробелы находятся в позициях
1 8 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 37 47
Смотрим вторую строчку.
1 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40

Берем их пересечение
1 8 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 37
Запоминаем это множество.

Берем третью строчку
1 4 6 10 15 24 40 49 51 52 53 54 55 56 57 58 59 60 61

Пересекаем с сохраненным множеством
1 15 24

Хрен знает насколько точно получилось, ибо я не компьютер, а это не таблица :)

Kolyaj 16.01.2009 18:03

Таблица из первого сообщения нормально оформленная
Код:

  PID  PGRP SID PRI STATE  BLK  SIZE COMMAND
  82    81  1 10o  RECV 14250  276K /usr/local/apache/bin/httpd start
  83    81  1 10o REPLY    66  276K /usr/local/apache/bin/httpd start
 5280    81  1 10o  WAIT    -1  28K /bin/sh -c ps
 5282    81  1 10o REPLY    1  24K ps
 8374    81  1 10o REPLY    66  276K /usr/local/apache/bin/httpd start


ZoNT 16.01.2009 18:08

Цитата:

Сообщение от Kolyaj
Смотрим первую строчку. Пробелы находятся в позициях
1 8 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 37 47
Смотрим вторую строчку.
1 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40

Во-во и в первой и во второй строке на 8 символе пробел. По товему алгоритму - разделитель столбца. Ан нет! Нет там разделителя.

x-yuri 16.01.2009 18:11

ZoNT, т.е. ты категорически против эмпирических методов?

Kolyaj 16.01.2009 18:11

ZoNT,
мы говорим о таком форматировании, в котором человек распознает таблицу. Твой пример никак нельзя назвать таблицей.

ZoNT 16.01.2009 18:12

Вот более-менее реальный пример:
Код:

PID  PGRP NAME SID PRI STATE  BLK  SIZE COMMAND
  82  fuck off!  1 10o  RECV 14250  276K /usr/local/apache/bin/httpd start
  83      proga  1 10o REPLY    66  276K /usr/local/apache/bin/httpd start
5280  ne kanaet  1 10o  WAIT    -1  28K /bin/sh -c ps


ZoNT 16.01.2009 18:14

Цитата:

Сообщение от x-yuri (Сообщение 10889)
ZoNT, т.е. ты категорически против эмпирических методов?

Совсем наоборот! просто я говорю о том, что в данном случае задача малорешаема, так как:
Цитата:

Сообщение от gaiver
Проблема в том, что между столбцами в этой таблицы пробелы (количество пробелов не равно разное соответсвенно, зависит от ширины столбца), так же пробелы встречаются в самих столбцах.
Сколько будет столбцов и строк узнать заранее нельзя.


Kolyaj 16.01.2009 18:20

Цитата:

Сообщение от ZoNT
Вот более-менее реальный пример:

Ну так он нормально разобьется.

ZoNT 16.01.2009 18:22

Цитата:

Сообщение от Kolyaj
Ну так он нормально разобьется.

То есть ты хочешь сказать что твой алгоритм PGRP NAME не разобъёт на два столбца?

Kolyaj 16.01.2009 18:25

Нет, там же в 3-й и 4-й строках нет пробела.

ZoNT 16.01.2009 18:29

Код:

PID  PGRP NAME SID PRI STATE  BLK  SIZE COMMAND
  82  fuck off!  1 10o  RECV 14250  276K /usr/local/apache/bin/httpd start
  83        pr  1 10o REPLY    66  276K /usr/local/apache/bin/httpd start
5280  netu srvr  1 10o  WAIT    -1  28K /bin/sh -c ps

Теперь есть.

ZoNT 16.01.2009 18:30

Согласно твоему алгоритму надо выделить память под ВСЕ строки и сравнивать ВСЕ пробелы! При сколько-нибудь большом кол-ве строк (несколько тысяч) комп помрёт от такого алгоритма...

Kolyaj 16.01.2009 18:31

Тут и я, не зная английского, разобью второй столбец на два, а программа тем более.

К чему этот поиск вырожденных случаев, вероятность которых мала?

Kolyaj 16.01.2009 18:34

Цитата:

Сообщение от ZoNT
Согласно твоему алгоритму надо выделить память под ВСЕ строки и сравнивать ВСЕ пробелы! При сколько-нибудь большом кол-ве строк (несколько тысяч) комп помрёт от такого алгоритма...

1. Выделять память нужно только под позиции пробелов, причем их будет сначала столько, сколько в первой строке, потом только уменьшаться.
2. Пересечение двух отсортированных списков (а они будут сразу отсортированные) О(n).
3. Не надо бежать по всем строкам, достаточно некоторого разумного количества.
4. Есть еще варианты? Если нет -- придется использовать этот :)

ZoNT 16.01.2009 18:38

Да, этот вариант самый оптимальный, но и он не даст нормальной точности.

Kolyaj 16.01.2009 18:39

Тут и человек не даст нормальной точности.

ZoNT 16.01.2009 18:40

Вариант с нормальными разделителями столбцов дал бы 100% точность.

x-yuri 16.01.2009 18:40

Цитата:

Совсем наоборот! просто я говорю о том, что в данном случае задача малорешаема
ZoNT, эмпирические методы как раз и используются, когда задача не решается на 100%. И они позволяют задачу решить в большинстве случаев. Это же лучше, чем вообще не решить задачу?

ZoNT 16.01.2009 18:42

Правильное решение - избежать нерешаемых задач, то есть заранее спроектировать систему так, чтобы избежать таких ситуаций.

x-yuri 16.01.2009 18:48

по поводу эмпирических методов
Цитата:

– Саш, - ответил он ей в тон, тоже тихо и почти по-приятельски. - В мире полным-полно сущностей, с которыми нельзя договориться. Но люди как-то живут, верно?
p.s. т.е. ты считаешь, что можно _всегда_ предусмотреть все варианты и учесть все интересы?

ZoNT 16.01.2009 18:49

Нет, но можно выбрать удобные инструменты для работы. Зачем парсить такой вывод, который делает сиджиайка, если можно переписать сиджиайку, чтобы она ставила нормальные разделители?

x-yuri 16.01.2009 18:52

Цитата:

Сообщение от ZoNT (Сообщение 10911)
Нет, но можно выбрать удобные инструменты для работы. Зачем парсить такой вывод, который делает сиджиайка, если можно переписать сиджиайку, чтобы она ставила нормальные разделители?

это не всегда разумно (требуется намного больше усилий)

ZoNT 16.01.2009 18:53

Это разумнее, так как надо избавляться от причин, а не исправлять последствия.

Gvozd 16.01.2009 19:33

Цитата:

Сообщение от x-yuri
если можно переписать сиджиайку, чтобы она ставила нормальные разделители?

Цитата:

Сообщение от ZoNT
Это разумнее, так как надо избавляться от причин, а не исправлять последствия.

да. давайте сделаем свою операционную систему.С блекджеком и шлюхами ;)

x-yuri 17.01.2009 08:32

Цитата:

Это разумнее, так как надо избавляться от причин, а не исправлять последствия.
ZoNT, т.е. ты считаешь, что разумнее переписать _все_ приложения работающие в командной строке и выдающие таблицы (автор привел только вывод одного из них), фактически создать свой дистрибутив (ты ведь даже не знаешь что делает эта утилита и насколько просто ее переписать), чем поступить согласно предложению Kolyaj?
p.s. пускай даже перед автором не стоит именно такая задача, но давай ее рассмотрим. Какое решение "разумнее"?

p.p.s. если бы все было так ортодоксально, то у нас была бы одна вера, страна, ОС, файловый менеджер и один производитель пива)))) Но у каждого человека свои приоритеты, как и у каждой фирмы, группы разработчиков. Чтобы сделать ПО, удобное одной категории людей, нужно пренебречь другой. ПО разрабатывается не только для того, чтобы его парсили. Кроме того, уверен, что эта утилита рассчитана на то, что ее будут парсить. Наверняка пробелы могут быть только в последнем столбце, если не предусмотрен разделитель.

ZoNT 19.01.2009 11:32

Цитата:

Сообщение от x-yuri
p.p.s. если бы все было так ортодоксально, то у нас была бы одна вера, страна, ОС, файловый менеджер и один производитель пива)))) Но у каждого человека свои приоритеты, как и у каждой фирмы, группы разработчиков.

Тебе бы посмотреть "Дух вермени" обе части...

Snipe 19.01.2009 11:45

Цитата:

Сообщение от ZoNT (Сообщение 10999)
Тебе бы посмотреть "Дух вермени" обе части...

Флуд!
"Дух времени" - это подстава и полная фигня.
Там многое дается на веру слушателю, а если пойти проверить - столько несостыковок и бреда можно найти.

ZoNT 19.01.2009 11:47

про религии - нестыковок нет... Про денежную систему: ну-ка давай, расскажи мне нестыковки, мне интересно... Про 9/11 - я так и сам предполагал...

x-yuri 19.01.2009 12:42

Цитата:

Тебе бы посмотреть "Дух вермени" обе части...
смотрел обе части. в общем с тобой, похоже, бесполезно спорить, ты всегда будешь защищать свою точку зрения
p.s. я тоже считаю, что надо избавляться от причин, а не исправлять последствия. Но это не всегда разумное решение и чтобы делать какие-то утверждения надо иметь достаточный опыт использования ОС, а не говорить, что "я это ОС не видел, но у них все неправильно"

Snipe 19.01.2009 12:57

Цитата:

Сообщение от ZoNT (Сообщение 11003)
про религии - нестыковок нет... Про денежную систему: ну-ка давай, расскажи мне нестыковки, мне интересно... Про 9/11 - я так и сам предполагал...

http://anti-zeitgeistmovie.info/

KOPCAP 26.02.2009 14:30

Эм вопрос данные помещаемые в таблицу ведб от куда-то берутся, значит где-то хранятся, значит их можно отредактировать так, чтоб в них не содержаловь пробелов?

ZoNT 26.02.2009 15:05

??


Часовой пояс GMT +3, время: 11:40.