Jump to content
vin1

replace words in text with other words from a word list

Recommended Posts

vin1
Posted (edited)

i need a script that can replace words in text with other words from a words list

it has to have 2 edit boxes input/output and a button "run"

from word_list.txt it choses which word to replace with. words are separated with commas for multiple choice

 

Screenshot_3.png

 

 

Screenshot_4.png

 

 

; AutoIt GUI Example
; Created: 17/01/2005 - CyberSlug
; Modifed: 05/12/2011 - guinness
; Modifed: 09/06/2014 - mLipok

#Region INCLUDE
#include <AVIConstants.au3>
#include <GuiConstantsEx.au3>
#include <TreeViewConstants.au3>
#EndRegion INCLUDE

#Region GUI
GUICreate("Sample GUI", 400, 420)
GUISetIcon(@SystemDir & "\mspaint.exe", 0)
#EndRegion GUI



#Region EDIT
GUICtrlCreateEdit(@CRLF & "  Sample Edit Control", 10, 10, 380, 175)
GUICtrlSetTip(-1, '#Region EDIT')
#EndRegion EDIT

#Region EDIT2
GUICtrlCreateEdit(@CRLF & "  Sample Edit Control", 10, 185, 380, 175)
GUICtrlSetTip(-1, '#Region EDIT')
#EndRegion EDIT2

#Region BUTTON
GUICtrlCreateButton("Sample Button", 10, 360, 100, 30)
GUICtrlSetTip(-1, '#Region BUTTON')
#EndRegion BUTTON

#Region GUI MESSAGE LOOP
GUISetState(@SW_SHOW)
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            ExitLoop

    EndSwitch
WEnd

GUIDelete()
#EndRegion GUI MESSAGE LOOP

 

Edited by vin1

Share this post


Link to post
Share on other sites
Earthshine
Posted (edited)

well, you had better get busy with that :)

where is the code that does the selection and such that you have tried?  

I think a Moderator already has this covered....

This code is taken directly from that post--Written by Moderator @Melba23, for your convenience, and it works, I just tested it. You could the adapt the algorithm for your needs. but you would need an appropriate  array to store your data (or use a database, each word could have multiple records associated with it and do it that way).

 

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <Array.au3>
#Include <GuiListBox.au3>

Global $hGUI, $cInput, $cList, $sPartialData, $asKeyWords[100]

; Create list full of random 5 character "words"
Keywords()

$hGUI = GUICreate("Example", 200, 400)

$cInput = GUICtrlCreateInput("", 5, 5, 190, 20)
$cList = GUICtrlCreateList("", 5, 30, 190, 325, BitOR(0x00100000, 0x00200000))
$cButton = GUICtrlCreateButton("Read", 60, 360, 80, 30)
$cUP = GUICtrlCreateDummy()
$cDOWN = GUICtrlCreateDummy()
$cENTER = GUICtrlCreateDummy()
GUISetState(@SW_SHOW, $hGUI)

; Set accelerators for Cursor up/down and Enter
Dim $AccelKeys[3][2]=[["{UP}", $cUP], ["{DOWN}", $cDOWN], ["{ENTER}", $cENTER]]
GUISetAccelerators($AccelKeys)

$iCurrIndex = -1

GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND")

While 1

    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $cList
            $sChosen = GUICtrlRead($cList)
            If $sChosen <> "" Then GUICtrlSetData($cInput, $sChosen)
        Case $cButton
            If $sPartialData <> "" Then
                $sFinal = GUICtrlRead($cInput)
                If _ArraySearch($asKeyWords, $sFinal) > 0 Then
                    MsgBox(0, "Chosen", $sFinal)
                EndIf
            EndIf
        Case $cUP
            If $sPartialData <> "" Then
                $iCurrIndex -= 1
                If $iCurrIndex < 0 Then $iCurrIndex = 0
                _GUICtrlListBox_SetCurSel($cList, $iCurrIndex)
            EndIf
        Case $cDOWN
            If $sPartialData <> "" Then
                $iTotal = _GUICtrlListBox_GetCount($cList)
                $iCurrIndex += 1
                If $iCurrIndex > $iTotal - 1 Then $iCurrIndex = $iTotal - 1
                _GUICtrlListBox_SetCurSel($cList, $iCurrIndex)
            EndIf
        Case $cENTER
            If $iCurrIndex <> -1 Then
                $sText = _GUICtrlListBox_GetText($cList, $iCurrIndex)
                GUICtrlSetData($cInput, $sText)
                $iCurrIndex = -1
                _GUICtrlListBox_SetCurSel($cList, $iCurrIndex)
            EndIf
    EndSwitch

WEnd

Func CheckInputText()

    $sPartialData = "|" ; Start with delimiter so new data always replaces old
    Local $sInput = GUICtrlRead($cInput)
    If $sInput <> "" Then
        For $i = 0 To 99
            If StringInStr($asKeyWords[$i], $sInput) <> 0 Then $sPartialData &= $asKeyWords[$i] & "|"
        Next
        GUICtrlSetData($cList, $sPartialData)
    EndIf
EndFunc   ;==>CheckInputText

Func Keywords()

    Local $sData
    For $i = 0 To 99
        $asKeyWords[$i] = Chr(Random(65, 90, 1)) & Chr(Random(65, 90, 1)) & Chr(Random(65, 90, 1)) & Chr(Random(65, 90, 1))
        $sData &= $asKeyWords[$i] & "|"
    Next
    GUICtrlSetData($cList, $sData)
    $iCurrIndex = -1
    _GUICtrlListBox_SetCurSel($cList, $iCurrIndex)

EndFunc   ;==>Keywords

Func _WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)

     ; If it was an update message from our input
    If _WinAPI_HiWord($wParam) = $EN_CHANGE And _WinAPI_LoWord($wParam) = $cInput Then
       CheckInputText()
    EndIf

EndFunc

 

 

 

Edited by Earthshine

My resources are limited. You must ask the right questions

 

Share this post


Link to post
Share on other sites
Earthshine
Posted (edited)

also, sounds like you need a Dictionary (in your case a Thesaurus). check this thread

Code from sample that I tested. Works as Dictionary

#Include <GUIListBox.au3>

Global $Ini = @ScriptDir & "\Dictionary.ini"
Global $Found
Global $WordCount
IniWrite($Ini, "Dictionary", "", "")

$GUI = GUICreate("Dictionary", 474, 336)
GUICtrlCreateLabel("Search:", 0, 0, 48, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$SearchInput = GUICtrlCreateInput("", 0, 16, 121, 21)
$Search = GUICtrlCreateButton("Search", 120, 16, 43, 21, 0)
GUICtrlCreateLabel("Dictionary Entries:", 0, 40, 89, 17)
$DictionaryEntries = GUICtrlCreateList("", 0, 56, 121, 279)
$AddEntry = GUICtrlCreateButton("Add Entry", 120, 56, 75, 25, 0)
$DeleteEntry = GUICtrlCreateButton("Delete Entry", 120, 88, 75, 25, 0)
$EditEntry = GUICtrlCreateButton("Edit Entry", 120, 120, 75, 25, 0)
$PronounceEntryName = GUICtrlCreateButton("Pronounce Entry Name", 200, 56, 123, 25, 0)
$PronounceEntryDefinition = GUICtrlCreateButton("Pronouce Entry Definition", 200, 88, 123, 25, 0)
GUICtrlCreateLabel("Entry Definition:", 120, 152, 78, 17)
$EntryDefinition = GUICtrlCreateEdit("", 120, 169, 353, 163, 0x0004)
$About = GUICtrlCreateButton("About", 398, 0, 75, 25, 0)
_PopulateDictionaryList()
GUISetState(@SW_SHOW)

While 1
    WinSetTitle($GUI, "", "Dictionary - "&$WordCount&" words present.")
    Switch GUIGetMsg()
        Case - 3
            Exit
        Case $DictionaryEntries
            _GetDefinition()
        Case $Search
            _Search()
        Case $AddEntry
            _NewEntry()
        Case $DeleteEntry
            _DeleteEntry()
        Case $EditEntry
            _EditEntry()
        Case $PronounceEntryName
            $Speak = ObjCreate("Sapi.SPVoice")
            $Speak.Speak(GUICtrlRead($DictionaryEntries))
        Case $PronounceEntryDefinition
            $Speak = ObjCreate("Sapi.SPVoice")
            $Speak.Speak(GUICtrlRead($EntryDefinition))
        Case $About
            MsgBox(64, "About", "Dictionary copyright Justin Reno 2008.")
    EndSwitch
WEnd

Func _PopulateDictionaryList()
    If FileExists($Ini) Then
        If $WordCount <> "" Then $WordCount = ""
        $GetEntries = IniReadSection($Ini, "Dictionary")
        GUICtrlSetData($DictionaryEntries, "")
        For $A = 1 To $GetEntries[0][0]
            $WordCount += 1
            _GUICtrlListBox_AddString ($DictionaryEntries, $GetEntries[$A][0])
        Next
    EndIf
EndFunc   ;==>_PopulateDictionaryList

Func _GetDefinition()
    If FileExists($Ini) Then
        $GetEntries = IniReadSection($Ini, "Dictionary")
        For $B = 1 To $GetEntries[0][0]
            If $GetEntries[$B][0] = GUICtrlRead($DictionaryEntries) Then GUICtrlSetData($EntryDefinition, $GetEntries[$B][1])
        Next
    EndIf
EndFunc

Func _Search()
    If FileExists($Ini) Then
        $GetEntries = IniReadSection($Ini, "Dictionary")
        For $C = 1 To $GetEntries[0][0]
            If GUICtrlRead($SearchInput) = $GetEntries[$C][0] Then $Found = $GetEntries[$C][0]
        Next
        If $Found <> "" Then _GUICtrlListBox_SetCurSel ($DictionaryEntries, _GUICtrlListBox_SelectString ($DictionaryEntries, $Found))
    EndIf
EndFunc   ;==>_Search

Func _NewEntry()
    $GUI = GUICreate("New Entry", 122, 106, -1, -1, -1, 0x80)
    GUICtrlCreateLabel("Entry Word:", 0, 0, 60, 17)
    $EntryWord = GUICtrlCreateInput("", 0, 16, 121, 21)
    GUICtrlCreateLabel("Entry Definition:", 0, 40, 78, 17)
    $EntryDefinition = GUICtrlCreateInput("", 0, 56, 121, 21)
    $AddEntry = GUICtrlCreateButton("Add Entry", 0, 80, 121, 25, 0)
    GUISetState(@SW_SHOW)
    While 1
        Switch GUIGetMsg()
            Case - 3
                GUIDelete($GUI)
                ExitLoop
            Case $AddEntry
                If FileExists($Ini) Then
                    $GetEntries = IniReadSection($Ini, "Dictionary")
                    For $D = 1 To $GetEntries[0][0]
                        If $GetEntries[$D][0] = GUICtrlRead($EntryWord) Then
                            MsgBox(16, "Error", "Word to be added already exists!")
                            GUIDelete($GUI)
                            ExitLoop
                        EndIf
                    Next
                EndIf
                IniWrite($Ini, "Dictionary", GUICtrlRead($EntryWord), GUICtrlRead($EntryDefinition))
                If @Compiled = 0 Then Run(@AutoItExe & " " & FileGetShortName(@ScriptFullPath))
                If @Compiled = 1 Then Run (@ScriptFullPath)
                Exit
        EndSwitch
    WEnd
EndFunc   ;==>_NewEntry

Func _DeleteEntry()
    If GUICtrlRead($DictionaryEntries) <> "" Then IniDelete($Ini, "Dictionary", GUICtrlRead($DictionaryEntries))
    _PopulateDictionaryList()
EndFunc

Func _EditEntry()
    $GUI = GUICreate("Edit Entry", 123, 106, -1, -1, -1, 0x80)
    GUICtrlCreateLabel("Entry Word:", 0, 0, 60, 17)
    $EntryWord = GUICtrlCreateInput(GUICtrlRead($DictionaryEntries), 0, 16, 121, 21)
    GUICtrlCreateLabel("Entry Definition:", 0, 40, 78, 17)
    $EntryDefinition = GUICtrlCreateInput("", 0, 56, 121, 21)
    $SaveEntry = GUICtrlCreateButton("Save Entry", 0, 80, 121, 25, 0)
    GUISetState(@SW_SHOW)
    While 1
        Switch GUIGetMsg()
            Case - 3
                GUIDelete($GUI)
                ExitLoop
            Case $SaveEntry
                IniWrite($Ini, "Dictionary", GUICtrlRead($EntryWord), GUICtrlRead($EntryDefinition))
                _PopulateDictionaryList()
                GUIDelete($GUI)
                If @Compiled = 0 Then Run(@AutoItExe & " " & FileGetShortName(@ScriptFullPath))
                If @Compiled = 1 Then Run (@ScriptFullPath)
                Exit
        EndSwitch
    WEnd
EndFunc   ;==>_EditEntry

You can bend Dictionary.ini to your will look at it's structure and replace with your words and values.

Dictionary.ini

Edited by Earthshine

My resources are limited. You must ask the right questions

 

Share this post


Link to post
Share on other sites
BrewManNH

If someone types a multi-word sentence in the first box, do you want to replace EVERY word in the sentence, some of the words, highlighted words, specific words? You're not giving us any help here. We'd need the word list, plus a lot of before and after examples of what you're looking to do.

Looking at your screenshot of the word list, I'd turn it into an INI file and work with that instead.

  • Like 1

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites
Melba23

vin1,

This looks like a basic plagiarism tool. Before we go any further, just exactly why do you want to do this?

M23


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______Open Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites
vin1
Posted (edited)

I'll use it to rewrite articles from online websites. I'll try to create a rephrase version that rearranges text differently than the source text

 

please help if possible

Edited by vin1

Share this post


Link to post
Share on other sites
Melba23

vin1,

So my guess was right. No help for you - write your own material. Thread locked.

M23

  • Like 1

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______Open Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Similar Content

    • Epic007
      By Epic007
      Hey guys I'm stuck with a program.....I need a make an automation which copies text from a chat bot app and paste it in notepad to log the replies of my chat bot and to analyse stuff....a lil help pls
       
       
       
       
       
       
       
      Thanks in advance
    • nooneclose
      By nooneclose
      I need to send a string of text to this popup and click on the ok button to save it.
      Here is the code I have so far:
      ;Start IE Sleep(7000) $oIE = _IECreate("http://www.google.com") Sleep(500) _IELoadWait($oIE) $hIE = _IEPropertyGet($oIE, "hwnd") ; Get Handle of the IE window Sleep(500) WinSetState($hIE, "", @SW_MAXIMIZE) ;Wait for a browser page load to complete Sleep(3000) _IENavigate($oIE, "https://properURL.com") Sleep(8000) _IELoadWait($oIE) ;Attach to a browser control embedded in another window $oIE = _IEAttach("https://"properURL.com", url") ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $oIE = ' & $oIE & @CRLF & '>Error code: ' & @error & ' Extended code: 0x' & Hex(@extended) & @CRLF) ;### Debug Console Sleep(2000) ;Get the title of the webpage ;Local $wTitle = _IEPropertyGet($oIE, "title") ;MsgBox($MB_SYSTEMMODAL, "Webpage title:", $wTitle) ;Clicks the new button Sleep(3000) _IEAction($nWorkOrderB, "focus") _IEAction($nWorkOrderB, "click") Sleep(5000) ;Store the Element names where the important data will be sent ;Store the long description button Local $wLongDButton = _IEGetObjById($oIE, "m65d795a4-img") ;Store the long Description field id Local $wComments = _IEGetObjById($oIE, "ma6499a9c-rte_iframe") ;Store the ok button id that is in the long description Local $wCommOk = _IEGetObjById($oIE, "m74031266-pb") ;******************************************************************************* ; Send the stored data to the proper field ;******************************************************************************* ;Click the long description button Sleep(300) _IEAction($wLongDButton, "focus") _IEAction($wLongDButton, "click") Sleep(300) ;Sends the Comments Sleep(500) _IEAction($wComments, "focus") _IEAction($wComments, "click") Sleep(500) _IEFormElementSetValue($wComments, "hello darkness my old friend") ;Click the ok button Sleep(500) _IEAction($wCommOk, "focus") _IEAction($wCommOk, "click") Sleep(500)  
      Here is the popup:

    • reida
      By reida
      Hello. Help to write the text.
      <textarea tabindex="4" class="js-input compose__labels__input" style="width: 407px; max-width: 413px;" wrap="off" autocomplete="off" data-original-name="To"></textarea>  I can not make.
      #include <IE.au3> $sLogin = 'adv' $iError = 1 $sUrl = 'https://......' $oIE = _IECreate($sUrl) ;;; _IELoadWait($oIE) $oLogin = _IEGetObjByName($oIE, "To") Sleep(7000) If IsObj($oLogin) Then _IEFormElementSetValue($oLogin, $sLogin) _IELoadWait($oIE) ; EndIf EndIf Through the selector it can be possible?
      #toolkit-154163367424641composeForm > div:nth-child(1) > div > div.compose-head__content.js-collapsed-off > div.compose-head__row-wrapper.compose-head__row-wrapper_to.js-row > div > div > div:nth-child(2) > div > div > div > textarea.js-input.compose__labels__input  
    • cramaboule
      By cramaboule
      Hi all,
       
      I was wondering if it is possible (and how) to put text on video on-the-fly (like VLC displays Title movie at the begining)
      and of course doing that in AutoIt
      Thanks in advance...
       
      C.
    • reida
      By reida
      Hello. On page there is mail address. How to keep in a text file this address? 
      It is page and email
      https://alpari.com/
      info@alpari.com
×