![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
как имея обычный dat файл перевести его в cvs? в дат файле информация содержится как бы в виде таблицы, только все разделено пробелами, а нужно соответственно разделять к какой колонке какая информация принадлежит?! хотела регулярное выражение взять с пробелами, но там есть слова, разделенные пробелами в одной колонке. как быть?! cvs файл - это такой же, только поля разделены запятыми.
т.е. дан файл
??? Добавлено через 1 минуту и 43 секунды немного неправильно отобразилось, реально одинаковые колонки начинаются с одинакового числа символов от начала строки. визуально их можно различить... |
|||
|
||||
chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 15 Всего: 77 |
Да хотя бы так(примерно):
CVS и CSV - разные вещи. Тебе нжен именно CSV(comma separated values) Токенайзер - самое простое и ручное. Добавлено через 13 минут и 5 секунд Погляди ещё Это Это И просто кучу других ![]() Это сообщение отредактировал(а) chief39 - 24.9.2007, 17:14 -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
я же не могу весь файл расписать через StringTokenizer, чтобы запятые вставить, проще тогда от руки их прописать, нет?!
Добавлено через 1 минуту и 16 секунд кстати, да csv! |
|||
|
||||
_Y_ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Делить по пробелам это, что называется, некорректная задача. Комп он глупый и сам не знает (и никогда не узнает) что какой пробел означает. Правильно ли я понял, что каждая колонка занимает строго определенное количество символов? Тогда что-то вроде этого:
ЗЫ: Это примерно и не претендует на оптимальность. ЗЫЫ: Понятное дело, что в этом случае текст, содержащийся в колонках, не должен включать запятых. Иначе опять получаем некорректную задачу, только теперь с запятыми, а не с пробелами ![]() Это сообщение отредактировал(а) _Y_ - 25.9.2007, 11:36 -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||
|
|||||
Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
да, только там таких полей порядка 50 и колонки все разные по размеру!!!!
![]() получается, это единственный вариант, который будет работать только для этого файла?! |
|||
|
||||
chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 15 Всего: 77 |
Упустил насчёт того, что пробелами всё(CSV только в глаза попалось по диагонали...) Valeria, тогда без вариантов - ты и сама-то сможешь различить только отступами. Тогда - задание жёстких отступов, как Y советует.
Ты не поняла ![]() Добавлено через 1 минуту и 23 секунды Сделай массив(лучше коллекцию) с размерами полей. Можешь передавать параметрами этот набор размеров - прога станет конфигуримой. Изменится размер одного поля - изменяешь этот параметр - и погнали -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
_Y_ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Ну я же самый простой вариант дал. ![]()
Как вариант - чтобы не считать число знаков вручную - сделать GUI, который бы:
![]() -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||
|
|||||
Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
спасибо всем. написала программу
![]() |
|||
|
||||
chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 15 Всего: 77 |
Работает намана?
![]() -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
работает нормально с массивом, но на файле, который я сама создала в качестве примера. а вот на том файле, что мне прислали не идет, т.к. он очень большой, там порядка 50 полей а реально я насчитала 28, но и с ними не заработало.
и у меня так же есть файл, описывающий число полей и их размер, не знаю, как он мне может пригодится? вообщем, пишу американцу, что ничего не получилось... |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Valeria, почему не получилось? Задача ведь тивиальная. Может стОит показать публике реальные фаилы?
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
ну реальный файл очень большой, примерно две строки выглядят так 264 и 265
в описании там написано 06 SEQNUM PIC S9(10). 06 HISTSEQNUM PIC S9(10). 06 NAME PIC X(60). 06 PHONE1 PIC X(32). и так далее.... как это использовать, не знаю?! просто число полей и сколько они должны в памяти места занимать. я когда массив чисел писала, просто посчитала число колонок в файле и позицию каждой колонки. я думаю вряд ли тут что можно придумать еще... ![]() Добавлено через 2 минуты и 34 секунды это кстати описание в Кобол, вообще есть и java типа "GRN" CHAR(10) NOT NULL WITH DEFAULT '' , |
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
dat файлы не имеют стандартного формата. Каждое приложение, создающее dat, использует свой формат и только оно и может нормально его читать. Вам надо прочитать файл побайтно и понять его структуру, какие байты используются для разделения колонок (возможно не только пробелы), какие для переноса строки. Потом уже решать как конвертировать.
|
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
А у меня возникла вот такая идея, основанная на предположении, что у Вас колонки фиксированной ширины (число символов в колонке) и разделены пробелами.
Идея: Пробелы, разделяющие колоноки находятся в каждой строке в одних и тех же положениях. Надо пройти весь файл два раза:
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
_Y_,ну с пробелами хуже, т.к. одно поле может содержать несколько слов?! т.е. эти пробелы надо пропускать, но их нельзя определить. поэтому проще было искать положение колонок по словам, но к сожалению они не все заполнены.
Добавлено через 2 минуты и 53 секунды кстати, некоторые колонки не содержат пробелов, а идут подряд .... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |