Что нового

Зацените пожалуйста...

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
Здравствуйте все! с новым годом всех! Имеется *.txt файл с текстом и переводом слов формата:
Код:
_*a great many=множество;00001+
_*a little=немного;00002+
_*a lot of=много;00003+
_*abandon=отказаться;00004+
_*abatement=уступка в цене;00005+
_*abide=ждать, терпеть;00006+
_*ability=способность;00007+
и так далее. Все слова по алфавиту, всего слов 5399. 00001+, 00002+ это номера(1-й 2-й, ну просто так пронумерованно. а "_*" вообще незнаю для чего)))
Вот я и решил сделать словарь в формате CHM. Вот такой я блин развратник))) :laugh: но дело в том, что непойму как их лучше сунуть, или ввиде таблицы, или просто через тире вот так:

ably - умело, ловко

или еще как нибуть, как вы думаете как сунуть их лучше всего?

Вот Демка, там все ясно написано, я сделал 3 варианта (1-й урок, 2-й, и 3-й какой из них лучше всего подходит?) выберите самый лучший вариант для словаря, и я сделаю всесь словарь в этом стиле, главное чтоб был удобным и глаза не мозолил надеюсь все поняли очем я. Жду вопросов и ответов)
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Bloodrinker
На мой взгляд, первый урок оформлен лучше двух других...
 
Автор
B

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
snoitaleR сказал(а):
Bloodrinker
На мой взгляд, первый урок оформлен лучше двух других...

думаешь просто через тире? а может вместо равно просто вертикальную линию и все? а ? как думаешь?
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Bloodrinker
Думаю, если "равно" заменить на "тире" будет смотреться еще лучше, так как "тире" будут меньше сливаться друг с другом при перебросе взгляда с английского слова на русское...

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

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Bloodrinker,
Мне тоже кажется, что через "тире" будет лучше. Можно между словами и "тире" поставить пробелы. И, наверное, лучше в одну строку без переносов.
 
Автор
B

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
madmasles сказал(а):
Bloodrinker,
Мне тоже кажется, что через "тире" будет лучше. Можно между словами и "тире" поставить пробелы. И, наверное, лучше в одну строку без переносов.

как в строку? может в 1 столбик имеешь ввиду? :smile:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Bloodrinker,
Может я неправильно выразился, я имел в виду, что было бы лучше (на мой взгляд), если и англ. слово и перевод были в одной строке, без переносов.
Не так:
Код:
aboard  = на борту
abolish   =  отменять, 
уничтожать
,
А так:
Код:
aboard   - на борту
abolish   -  отменять, уничтожать.
.
 
Автор
B

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
madmasles, ну естественно без переносов. а еще вместо тире я хотел просто вертикальную линию провести, как в тетрадках в школе раньше))) помните?))) или сделать чтоб все тире на одном уровне были. но вот как реализовать вертикальную линию в ворде 7-м так и не понял
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Bloodrinker,
Вы имеете в виду это "|" ?
У меня Office 2003, в нем Правка - Найти - Заменить - Заменить все. Как в 2007 не знаю, наверное также. Тире на одном уровне можно через Tab сделать.
 
Автор
B

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
madmasles сказал(а):
Bloodrinker,
Вы имеете в виду это "|" ?
У меня Office 2003, в нем Правка - Найти - Заменить - Заменить все. Как в 2007 не знаю, наверное также. Тире на одном уровне можно через Tab сделать.

Блин, там в блокноте 5400 слов. все они идут вот так:
Код:
_*or=или;03304+
_*oral=устный;03305+
_*orange=апельсин, оранжевый;03306+
_*orbit=орбита;03307+
_*orchard=фруктовый сад;03308+
_*orchestra=партер, оркестр;03309+
_*order=порядок, приказ, заказ;03310+
_*ordinal=порядковый;03311+
_*ordinary=обычный, простой;03312+
_*ore=руда;03313+

сначала надо звездочки да нижнее подчеркивание как-то убрать, да еще и цифры справа. вместо равно поставить одну вертикальную, прямую, сплошную линию. может как-то процесс можно автоматизировать? ато вручную сума сойдешь :wacko:
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Bloodrinker
Это одна из задач, посильных для AUTOIT...
Но для этого нужно использовать RegExp...
Я в них не силен...
Создай тему в разделе "Для новичков" или "Стол заказов", думаю помогут сверстать нужный скрипт...
 
Автор
B

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
snoitaleR сказал(а):
Bloodrinker
Это одна из задач, посильных для AUTOIT...
Но для этого нужно использовать RegExp...
Я в них не силен...
Создай тему в разделе "Для новичков" или "Стол заказов", думаю помогут сверстать нужный скрипт...

Да мне бы просто вот бопустим пачал текст выделять, он вывделяет до ранее заданного знака, и прерывает выделение, переходит на другую строку. ну чтоб сразу все слова выделить до знака равно, сначала русские а потом английские и вставить)))
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Bloodrinker
Сочинил простенький скриптик для конвертирования словаря...

Код:
; НАЧАЛО

; Название исходного файла и сконвертированного

 $DATAFILE1=@ScriptDir&"\slovar.txt"
 $DATAFILE2=@ScriptDir&"\slovar.new.txt"

 $FILE1=FileOpen($DATAFILE1,0)
 $FILE2=FileOpen($DATAFILE2,2)

 SplashTextOn("Внимание!","Подождите, идет конвертирование словаря...",400,50)

 While true
  $LINE=FileReadLine($FILE1)
  if @error=-1 Then ExitLoop
  $LINE=StringTrimLeft($LINE,2)
  $POS=StringInStr($LINE,";")
  $LINE=StringMid($LINE,1,$POS-1)
  FileWriteLine($FILE2,$LINE)
 Wend

 FileClose($FILE1)
 FileClose($FILE2)

 SplashOff()

; КОНЕЦ
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Bloodrinker,
У меня вот так получилось:
Код:
$sTest=FileRead(@ScriptDir&"\slovar.txt")
$sTest = StringReplace(StringRegExpReplace($sTest, "[_*+0-9]", ""), "=", " | ")
FileWrite(@ScriptDir&"\slovar.new.txt",$sTest)


Я скопировал Ваш текст на 10000 строк. Время обработки 2.644 сек. Может вместо ";" в конце каждой строки поставить"."?
 
Автор
B

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
madmasles сказал(а):
Bloodrinker,
У меня вот так получилось:
Код:
$sTest=FileRead(@ScriptDir&"\slovar.txt")
$sTest = StringReplace(StringRegExpReplace($sTest, "[_*+0-9]", ""), "=", " | ")
FileWrite(@ScriptDir&"\slovar.new.txt",$sTest)


Я скопировал Ваш текст на 10000 строк. Время обработки 2.644 сек. Может вместо ";" в конце каждой строки поставить"."?

там вобще ничего ставить не надо, все лишние знаки снести)))


Добавлено:
Сообщение автоматически объединено:

Блин, народ... 1-й скрипт чето начинает писать в slovar.new но так и стоит с окном "подождите и тд" до бесконечности, чем дольше его оставляешь, тем больше мегабайт пишет в блокнот) но блокнот не открываается потом, непонял таки че за баг...

а 2-й вообще ппрросто создает пустой slovar.new и пропадает)
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Bloodrinker
Мой скрипт я проверял на кусочке словаря, который ты выложил в первом посте...
Долго, потому что строк много или встретилась строка, которая не попадает под стандартный шаблон...

Сколько строк в исходном словаре?

Давай попробуем с помощью счетчика проконтролировать, не зависает ли скрипт:

Код:
; НАЧАЛО

 $DATAFILE1=@ScriptDir&"\slovar.txt"
 $DATAFILE2=@ScriptDir&"\slovar.new.txt"

 $FILE1=FileOpen($DATAFILE1,0)
 $FILE2=FileOpen($DATAFILE2,2)

 $COUNTER=0

 While true
  SplashTextOn("Внимание!","Подождите, идет конвертирование словаря..."&$COUNTER,400,50)
  $LINE=FileReadLine($FILE1)
  if @error=-1 Then ExitLoop
  $LINE=StringTrimLeft($LINE,2)
  $POS=StringInStr($LINE,";")
  $LINE=StringMid($LINE,1,$POS-1)
  FileWriteLine($FILE2,$LINE)
  $COUNTER+=1
 Wend

 FileClose($FILE1)
 FileClose($FILE2)

 SplashOff()

; КОНЕЦ
 

SyDr

Сидра
Сообщения
651
Репутация
158
Дайте файлик изначальный и формат строки, который надо получить :smile:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Bloodrinker,
Я еще раз проверил. И своим скриптом, и скриптом snoitaleR - оба прекрасно отрабатывает. Но и я, и snoitaleR писали скрипты, учитывая приведенный Вами кусок текста.
Поэтому полностью согласен с SyDr: "Файл в студию!"

PS
А какая у Вас операционная система и версия AutoIt? У меня Windows XP SP3, версия AutoIt 3.3.2.0.
 
Автор
B

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
Все... разобрался))) просто формат исходного ьыл не тхт а почемуто какой-то *.dic первый раз о этом формате слышу, и поэтому скрипт чтото конвертировал до бесконечности))) я еще и свой скрипт написал, он вообще ошибку выдавал, что файла slovar.txt нету))) тогда и подумал, что может изза формата и точно)))
Вот исходный файл, но вот как всего лучше слеоать незнаю))) подумал, что через каждые 60 перепаботанных слов скриптом. он должен сохранять этот блокнот и создать новый и обрабатывать следующие 60 слов (с 61-го по 120-й и т д) о5 сохраняя уже во 2-й блокнотовский файл) итак все 5399 слов.

думаю исходный нужно чтоб было вот так чтоли) (думаю какбы попроще и как бы по удобнее, чтоб глаза не разбегались вот файл с результатами, выберите лучший вапиант для словаря))) там их всего 4

snoitaleR,
Я модернизировал твой скрипт, последний результат получился именно им, а вот 2-й и 3-й это моя фантазия и клавиша TAB ;D эти 2 результата сделаны вручную)
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Bloodrinker
Для меня четвертый вариант воспринимается легче первых трех...
То есть, как я думаю, либо не должно быть лишних пробелов, либо пробелов должно быть столько, чтобы перевод был по одной вертикальной линии (имитация таблицы)...
 
Верх