Автор Тема: [RegExp] замена английских слов на русские  (Прочитано 8241 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Alex Bit [?]

  • Новичок
  • *
  • Сообщений: 24
  • Репутация: 0
    • Награды
Всем привет.Встала необходимость решить с AutoIT задачку .Из текстового документа (А) взять строку с английскими словами ,перевести слова на русский и записать в текстовый документ (В).Мои мысли по решению  этой задачи таковы.Объявить 2  массива, массив  английских слов и по индексам ему соответствуют массив из русских слов.Помогите пожалуйста с эффективным кодом основной задачи

Русское сообщество AutoIt

[RegExp] замена английских слов на русские
« Отправлен: Май 30, 2011, 09:47:11 »

Оффлайн axlwor [?]

  • Скриптер
  • ****
  • Сообщений: 657
  • Репутация: 147
    • Награды
1. копировать в буфер обмена
2. зайти на сайт переводчика (e.g. переводчик гугля)
3. вставить в поле перевода. выбрать направление перевода. перевести. скопировать переведенный текст
4. вставить в новый документ
ps. хотя... вроде гугль целыми документами переводит

Оффлайн AZJIO [?]

  • VIP
  • *
  • Сообщений: 2739
  • Репутация: 1143
    • мой сайт
    • Награды
  • Версия AutoIt: 3.3.8.1
Alex Bit
Я как раз на днях переводил тексты

Для Client for Google Translate

(нажмите для показа/скрытия)

Для QTranslate
(нажмите для показа/скрытия)

Русское сообщество AutoIt

Re: [RegExp] замена английских слов на русские
« Ответ #2 Отправлен: Май 30, 2011, 10:51:26 »

Оффлайн Alex Bit [?]

  • Новичок
  • *
  • Сообщений: 24

  • Автор темы
  • Репутация: 0
    • Награды
Спасибо за очень ценный скрипт!!!Но у меня задача перевести не большое количество слов (около сотни).Нужно именно как я и описал в задаче.Тогда у меня появится возможность переводить как мне захочется,а не так как это принято.

Оффлайн AZJIO [?]

  • VIP
  • *
  • Сообщений: 2739
  • Репутация: 1143
    • мой сайт
    • Награды
  • Версия AutoIt: 3.3.8.1
Alex Bit
(нажмите для показа/скрытия)

Формат En-Ru.txt такой
Цитировать
Привет=Hello
Плохой=Bad
Вчера=Yesterday
Один=One
Самолёт=Plane
текст из файла textEn.txt переводится в textRu.txt

Русское сообщество AutoIt

Re: [RegExp] замена английских слов на русские
« Ответ #4 Отправлен: Май 30, 2011, 13:06:48 »

Оффлайн Alex Bit [?]

  • Новичок
  • *
  • Сообщений: 24

  • Автор темы
  • Репутация: 0
    • Награды
Большое спасибо за интересный подход.Код понятен.У меня честно говоря в голове вертелось нечто более сложное.Только не могу понять почему у меня вылазит сообщение "Не возможно прочитать массив 1".Хотя En-Ru.txt лежит в той-же директории что и скрипт.

Оффлайн Alex Bit [?]

  • Новичок
  • *
  • Сообщений: 24

  • Автор темы
  • Репутация: 0
    • Награды
Есть ли возможность что-бы скрипт не обращал внимание на верхний и нижний регистр?

Оффлайн axlwor [?]

  • Скриптер
  • ****
  • Сообщений: 657
  • Репутация: 147
    • Награды

Русское сообщество AutoIt

Re: [RegExp] замена английских слов на русские
« Ответ #7 Отправлен: Июнь 01, 2011, 17:09:35 »

Оффлайн Alex Bit [?]

  • Новичок
  • *
  • Сообщений: 24

  • Автор темы
  • Репутация: 0
    • Награды
Большое Всем спасибо!!!Тема закрыта.

Оффлайн joparezzz [?]

  • Новичок
  • *
  • Сообщений: 62
  • Репутация: 0
  • Пол: Мужской
    • Награды
Re: [RegExp] замена английских слов на русские
« Ответ #9, Отправлен: Сентябрь 03, 2013, 09:38:19 »
Код: AutoIt [Выделить]
#include <file.au3>
Global $aRuEn
If Not _FileReadToArray(@ScriptDir&'\Ru-En.txt', $aRuEn) Then
   MsgBox(4096,"Ошибка", "Невозможно прочитать массив" & @error)
   Exit
EndIf

$file = FileOpen(@ScriptDir&'\textRu.txt', 128)
$text = FileRead($file)
FileClose($file)

For $i = 1 to $aRuEn[0]
    $aTmp=StringSplit($aRuEn[$i], '=')
    $text=StringReplace($text, $aTmp[1], $aTmp[2]) ; на английский
Next

$file = FileOpen(@ScriptDir&'\textEn.txt',128 + 2)
FileWrite($file, $text)
FileClose($file)
 


если, например, в файле En-Ru.txt будут слова:
сам=himself
самолет=plane
а как можно реализовать, чтоб проверялось слово целиком а не побуквенно.. т.е. до 100% совпадения всего слова до знака =.
Например если в файле textRu.txt будет слово "самолет", то программа переводит не корректно, а именно, переведет слово "сам" а "олет" оставляет неизменным. Т.е. в файле textEn.txt, выглядить так "himselfолет".
« Последнее редактирование: Сентябрь 03, 2013, 10:01:59 от joparezzz »

Оффлайн ivsatel [?]

  • Продвинутый
  • ***
  • Сообщений: 319
  • Репутация: 84
  • Пол: Мужской
    • Награды
Re: [RegExp] замена английских слов на русские
« Ответ #10, Отправлен: Сентябрь 03, 2013, 19:38:24 »
Так?
Код: AutoIt [Выделить]
Global $i = 0

$file = FileOpen(@ScriptDir&'\Ru-En.txt')
$text = FileRead($file)
FileClose($file)

$aTransDicRU = StringRegExp($text, '(\S+)\=', 3)
$aTransDicEN = StringRegExp($text, '\=(\S+)', 3)

$file = FileOpen(@ScriptDir&'\text.txt')
$text = FileRead($file)
FileClose($file)

While 1

    If $text == $aTransDicRU[$i] Then
        FileWrite(@ScriptDir&'\textRu.txt', $aTransDicEN[$i])
        ExitLoop
    EndIf

    If $text == $aTransDicEN[$i] Then
        FileWrite(@ScriptDir&'\textEn.txt', $aTransDicRU[$i])
        ExitLoop
    EndIf

    $i += 1

WEnd

В наличии должно быть три файла
Ru-En.txt = словарь
text.txt = слово для перевода
textEn.txt и textRu.txt = фалы для записи результатов
« Последнее редактирование: Сентябрь 03, 2013, 19:46:01 от ivsatel »

Оффлайн joparezzz [?]

  • Новичок
  • *
  • Сообщений: 62
  • Репутация: 0
  • Пол: Мужской
    • Награды
Re: [RegExp] замена английских слов на русские
« Ответ #11, Отправлен: Сентябрь 04, 2013, 10:00:57 »
выдает ошибку тут:
Код: AutoIt [Выделить]
If $text == $aTransDicRU[$i] Then
If $text == ^ ERROR
 


К тому же в твоем примере предполагается что в файле text.txt только одно слово.. Мне надо чтоб в этом файле было много слов, программа делала поиск слов при нахождении переводила...
« Последнее редактирование: Сентябрь 04, 2013, 10:22:51 от joparezzz »

Русское сообщество AutoIt

Re: [RegExp] замена английских слов на русские
« Ответ #11 Отправлен: Сентябрь 04, 2013, 10:00:57 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
17 Ответов
8915 Просмотров
Последний ответ Июль 14, 2011, 20:49:53
от madmasles
11 Ответов
13935 Просмотров
Последний ответ Сентябрь 15, 2011, 16:31:19
от SET777
0 Ответов
907 Просмотров
Последний ответ Апрель 07, 2015, 10:10:20
от nothing1567
7 Ответов
1627 Просмотров
Последний ответ Декабрь 21, 2017, 11:13:38
от IP_rat
2 Ответов
871 Просмотров
Последний ответ Сентябрь 30, 2016, 15:11:37
от astanid
3 Ответов
2741 Просмотров
Последний ответ Январь 22, 2019, 17:35:02
от Асталиса
0 Ответов
3473 Просмотров
Последний ответ Ноябрь 22, 2016, 12:35:32
от hedji
5 Ответов
1546 Просмотров
Последний ответ Апрель 22, 2017, 14:47:26
от Garrett
3 Ответов
407 Просмотров
Последний ответ Апрель 03, 2018, 10:35:51
от InnI
7 Ответов
613 Просмотров
Последний ответ Май 13, 2018, 12:35:32
от gergerger111