Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Обработка текстового файла Добавлено: 31.08.05 15:34  

Автор вопроса:  baltaero
Здравствуйте. Помогите (посоветуйте), если несложно. Есть файл .txt такого вида:

c n0 N1 x650.539185 y908.076599 X1042.858765 Y885.426575
# Control Point No 36: 1.00000
c n0 N1 x640.701050 y997.983887 X1032.683716 Y973.944641
# Control Point No 38: 1.00000
c n0 N2 x25.550047 y769.933655 X824.773315 Y741.491150
# Control Point No 40: 1.00000
c n0 N2 x68.985519 y909.538574 X873.693054 Y877.454102
# Control Point No 78: 1.00000
c n1 N2 x25.682077 y677.033936 X431.188599 Y678.179810
# Control Point No 80: 1.00000
c n1 N2 x53.007000 y256.720093 X447.000824 Y257.937439
# Control Point No 82: 1.00000
c n1 N2 x49.318905 y319.883514 X447.050781 Y320.188721
# Control Point No 84: 1.00000
строчек очень много. Из этого фрагмента нужно вытащить 1-ую, 5-ую, 9-ую строчки (строчки, где меняется n или N)и сохранить все это в новом текстовом файле или .xls в таком виде
0 1 650.539185 908.076599 1042.858765 885.426575
0 2 25.550047 769.933655 824.773315 741.491150
1 2 25.682077 677.033936 431.188599 678.179810


 В языках программирования не силен. Пожалуйста, пришлите код или ссылку где можно посмотреть. Принимаются любые виды помощи. Спасибо за внимание.

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 AndreyMp



ICQ: 237822510 

Вопросов: 28
Ответов: 1182
 Профиль | | #1 Добавлено: 31.08.05 15:52
Что то мало понял. Ты имеешь ввиду что когда n0 меняется на n1 и т.д. или N0 на N1 и т.д.?
А сохранять надо эти номера (как я понял какие то точки) и их координаты ?

Ответить

Номер ответа: 2
Автор ответа:
 Barsik



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #2
Добавлено: 31.08.05 16:00
берешь и ищешь, то, что те надо... после тянешь отаток строки

Ответить

Номер ответа: 3
Автор ответа:
 baltaero



Вопросов: 2
Ответов: 3
 Профиль | | #3 Добавлено: 31.08.05 16:22
Дело в том, что n и N-это номера соседних кадров, которые м\д собой перекрываются, т.е имеют общие точки, xy XY-координаты общей точки этих снимков (например, одно и тоже дерево на разных снимках). Здесь: кадры 0 и 1, 0 и 2 -имеют две общ. точки, кадры 1 и 2 три. Мне же нужно вытащить координаты одной общей точки для каждой пары снимков в указанном выше виде. Как только меняется n0 на n1 или NO на N1 то сразу записать эту строчку в массив, т. е. как бы прорядить файл и представить в другом виде. Блин, извиняюся за корявое объяснение.

Ответить

Номер ответа: 4
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #4 Добавлено: 31.08.05 17:00
Чисто из спортивного интереса... не VB.

shadow ~ $ awk '{if (substr($2,1,2)==("n1";) || substr($2,1,2)==("n0";) || substr($3,1,2)==("N1";) || substr($3,1,2)==("N2";)) {print $0}}' data.txt | sed 's/x//;s/y//;s/X//;s/Y//;s/c//'
 n0 N1 650.539185 908.076599 1042.858765 885.426575
 n0 N1 640.701050 997.983887 1032.683716 973.944641
 n0 N2 25.550047 769.933655 824.773315 741.491150
 n0 N2 68.985519 909.538574 873.693054 877.454102
 n1 N2 25.682077 677.033936 431.188599 678.179810
 n1 N2 53.007000 256.720093 447.000824 257.937439
 n1 N2 49.318905 319.883514 447.050781 320.188721



теперь осталось отсортировать в зависимости от даблов.. :)

Ответить

Номер ответа: 5
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #5 Добавлено: 31.08.05 18:35
Немного оптимизировал... теперь вроде правильно..


shadow ~ $ awk '{if (substr($1,1,1)=="c";) {print $0}}' dd.txt | tr -d [:alpha:] | awk '! a[$1,$2]++'
 0 1 650.539185 908.076599 1042.858765 885.426575
 0 2 25.550047 769.933655 824.773315 741.491150
 1 2 25.682077 677.033936 431.188599 678.179810

Ответить

Номер ответа: 6
Автор ответа:
 baltaero



Вопросов: 2
Ответов: 3
 Профиль | | #6 Добавлено: 01.09.05 10:16
Интересно, а на VB это сложно написать? Потому что в этой абре-кадабре сложнее разобраться начинающим, чем в VB, наверное.

Ответить

Номер ответа: 7
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #7 Добавлено: 01.09.05 11:21
Обязательно на VB?
вот здесь замена tr с помощью которй можно удалить все литеры из файла:

http://www.ss64.com/nt/change.zip
http://www.ss64.com/nt/munge.html

вот здесь winawk:

http://gnuwin32.sourceforge.net/packages/gawk.htm

Ответить

Номер ответа: 8
Автор ответа:
 baltaero



Вопросов: 2
Ответов: 3
 Профиль | | #8 Добавлено: 01.09.05 18:30
Может кто подскажет, как из считываемой строки выделить значение n и N (4-ый и 7-ой символы) и сравнить со значениями в предыдущей строке?

Ответить

Номер ответа: 9
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #9 Добавлено: 01.09.05 21:09
да это просто реализовывать, но долго отлаживать, вообщем недумаю что кому-то интерестно писать это, так что придётся самому. Почитай инфу по работе с фалами и работе со строками...

n = FreeFile
Open file$ for input as #n
Do while not eof (n) 'цикл для обработки каждой стр.
Line Input #n, s$ 'Взяли строку
CountLine = CountLine + 1 'Считаем строчки...

If CountLine = 5 Then
'тут парсиш строку
'почитай про:
'Replace, Mid, Left, Right, InStr

s$ = Replace (s$,"x",CountLine) '(от фонаря, для примера, x заменить на номер строки)


AllStr$ = AlStr$ & s$ & vbCrLf 'Дописали то что отпарсили к общей строке...
End if

Loop 'Перешли слейдую строке..

Close #n

Msgbox AllStr$


P.S. Всё написано отвинта, для понимания и для общей картины в какую сторону копать...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам