Jump to content
vin1

replace words in text with other words from a word list

Recommended Posts

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

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

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

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.


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

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 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

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

vin1,

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

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 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

    • By nacerbaaziz
      hello autoit group
      please i've a question
      i had make a function that put some thing into the clipBoard and paste it
      using the send function
      e.g
      ClipPut("hello")
      send("^v")
       
      when the keyboard is english all things work fine
      but when the keyboard is arabic the send command write the ltr v insted of the text in clipboard
      i was tryed to use
      send("{ctrldown}v{ctrlUp}")
      but the same
      please can any one help me
       
    • By Kiko745
      Hello!
      I am new to autoit so please if someone could help me. I am trying to combine multiple .txt files but I can't get it right. In every file are the exact amout of lines ( for example here are 2 ) ,            I don't want to make it for just 2 lines for each txt files but for all the lines the txt files contains. The thing I want to do is :
      Text File 1
      Hello my name
      I am a big
      ...
      Text File 2
      is Fred,
      Potato head for
      ...
      Text File 3
      and I like to eat pizza.
      Not getting this right.
      ...
      ------------------- Combine them all into one txt file like here ------------------------------
      Final Text file
      Hello my name is Fred, and I like to eat pizza.
      I am a big Potato head for Not getting this right.
      ...
       
      Thanks for any advice!
      P.S. Sorry for my English, not my first language.
       
    • By Kruxe
      Hello Everyone,
      I am very green when it comes to AutoIT, I have recently started using it to automate a job that i perform using MS Excel and that is working great. Recently I have been faced with a challenge I which i need to copy a specific set of lines from one .txt file and past them, overwriting a specific set of lines in a different .txt file. I honestly have no clue how I can copy the specified lines and transfer them. What functions / commands could I use and how could I lay them out I AutoIT? Any and all help will be appreciated. 
      Thanks!
      Kruxe
    • By nacerbaaziz
      hello sirs
      i've some questions about StringRegExpReplace i hope you can help me
       
      i tried to make a function that give me the host of the url and other give me the url with out host
      for example i've this link
      https://www.example.com/vb/result.php
      i need the first give me the
      example.com
      and the other give me 
      /vb/result.php
      i find that
      $s_source = "https://www.google.com/vb/index.php" Local $s_Host = StringRegExpReplace($s_Source, '.*://(.*?)/.*', '\1') Local $s_Page = StringRegExpReplace($s_source, '.*://.*?(/.*)', '\1') msgBox(64, $s_Host, $s_Page)  
      but i found some problems i need your help to correct it
      first: when i get the host if the url has www i want to remove it
      second: if the url with out host did not have other things 
      i need the result to be ""
      e.g
      https://www.example.com
      the first i want it
      example.com
      and the second i want it to be ""
      i hope that you can help me
      thanks in advance
    • By _leo_
      Hey there!
      I am having a problem with clicking a button in IE. As you can see in the code, there would be a class name to click it, but since this button exists several times with exactly the same code, I can only use the "Noch nicht veröffentlicht" to separate it from the others. But this part is just pure text without any classification. 
      "<div class="checkmark" data-v-1e5b1f70=""><svg xmlns="http://www.w3.org/2000/svg" class="icon" viewBox="0 0 16 16" data-v-1e5b1f70=""><circle cx="8" cy="8" r="8" data-v-1e5b1f70="" /></svg></div>Noch nicht veröffentlicht"
      I was trying to click it with:
      #include <IE.au3> local $oNNVs = _IEFormGetCollection($oIE2) For $oNNV in $oNNVs If String($oNNV.innertext) = "Noch nicht veröffentlicht" Then _IEAction($oNNV, "click") EndIf Next and:
      $inputs = $oIE2.document.getElementsByTagName("div") For $input In $inputs If $input.innertext == "Noch nicht veröffentlicht" then $input.click() EndIf Next But nothing seems to work. Thanks for the help!
×
×
  • Create New...