Jump to content

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

 

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

 

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

Link to post
Share on other sites
  • Moderators

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

 

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
Link to post
Share on other sites
  • Moderators

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

 

Link to post
Share on other sites
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By MrKm
      AutoIT-OCRSpace-UDF1.3.zip
      This tiny yet powerful UDF will help you to convert Images to text with the help of  OCRSpace API version 3.50 .
      Detect text from a local file.
      ; ========================================================= ; Example 2 : Gets text from an image from a local path reference ; : Searchable PDF is not requested by default. ; : Processes it using a basic OCR logic. ; ========================================================= $b_Create_Searchable_PDF = True ; Use a table logic for receipt OCR $b_Table = True ; Set your key here. $v_OCRSpaceAPIKey = "" $OCROptions = _OCRSpace_SetUpOCR($v_OCRSpaceAPIKey, 1, $b_Table, True, "eng", True, Default, Default, $b_Create_Searchable_PDF) $sText_Detected = _OCRSpace_ImageGetText($OCROptions, @scriptdir & "\receipt.jpg", 0, "SEARCHABLE_URL") ConsoleWrite( _ " Detected text : " & $sText_Detected & @CRLF & _ " Error Returned : " & @error & @CRLF & _ " PDF URL : " & Eval("SEARCHABLE_URL") & @CRLF)  
      Detect text from a URL reference.
      ; ========================================================= ; Example 1 : Gets text from an image using a url reference ; : Searchable PDF is not requested. ; : Processes it using a basic OCR logic. ; ========================================================= $v_OCRSpaceAPIKey = "" ; SetUp some preferences.. $OCROptions = _OCRSpace_SetUpOCR($v_OCRSpaceAPIKey, 1, False, True, "eng", True, Default, Default, False) ; Make the request.. $sText_Detected = _OCRSpace_ImageGetText($OCROptions, "https://i.imgur.com/vbYXwJm.png", 0) ConsoleWrite( _ " Detected text : " & $sText_Detected & @CRLF & _ " Error Returned : " & @error & @CRLF)    
      Detect text from a URL reference to an array
      #include "OCRSpaceUDF\_OCRSpace_UDF.au3" #include <array.au3> ; Set your key here. $v_OCRSpaceAPIKey = "" $OCROptions = _OCRSpace_SetUpOCR($v_OCRSpaceAPIKey, 1, $b_Table, True, "eng", True, Default, Default, False) ; Below, the return type is set to 1 to return an array containing the coordinates of the bounding boxes for each word detected, ; in the format : #WordDetected , #Left , #Top , 3Height, #Width $aText_Detected = _OCRSpace_ImageGetText($OCROptions, "https://i.imgur.com/Z1enogD.jpeg", 1) _ArrayDisplay($aText_Detected, "")  
       
       
       
       
      https://github.com/KabueMurage/AutoIT-OCRSpace-UDF
      Download Latest Version : 
       
    • By nacerbaaziz
      hello evrybody
      here is an example about how to split your texts using a delimiter with the ability to select how much of delimiters shows in each colum  with $i_number
      e.g
      you have a long text and you want to split it in an array
      that evry colum have a number (n) of lines
      i made a function that do that for you
      just call it with a three params
      $s_text
      your text
      $i_number
      the number that you want to put in each col
      $s_siparator
      the siparator
      default is "|"
      here is the function with example
      i hope that it will be useful for you
       
      ****
       
      #include <Array.au3> $s_txt = "some text1some text2|some text3|some text4|some text5|some text6" $array = splitText($s_txt, 2) _ArrayDisplay($array) Func splitText($s_text, $i_number, $s_siparator = "|") Local $a_TXT = StringSplit($s_text, $s_siparator) Local $a_Return[$a_TXT[0] + 1] If ($a_TXT[0] <= $i_number) Or ($i_number <= 0) Then ReDim $a_Return[2] $a_Return[0] = 1 $a_Return[1] = $s_text Return $a_Return EndIf Local $i_Processed = 1, $i_arrayProcessed = 1 Do For $i = $i_Processed To ($i_Processed + $i_number) - 1 If ($a_TXT[0] < $i) Then ExitLoop If Not ($a_Return[$i_arrayProcessed]) Then $a_Return[$i_arrayProcessed] = $a_TXT[$i] Else $a_Return[$i_arrayProcessed] &= $s_siparator & $a_TXT[$i] EndIf $i_Processed += 1 Next $i_arrayProcessed += 1 Until ($a_TXT[0] < $i_Processed) ReDim $a_Return[$i_arrayProcessed] $a_Return[0] = $i_arrayProcessed - 1 Return $a_Return EndFunc ;==>splitText
      accept my greetings
      thanks to
      @Dan_555
      for his notes
       
    • By nacerbaaziz
      hello autoit team
      please i've a question for you.
      am creating a audio player
      and in this audio player i want to show the current trac info
      such as the total time and the position ... etc
      i know i can show it as label
      but the screen reader for the blind read the text every change
      because it have a screen scan
      what i want is to show this informations but such image or icon
      i mean i need to create
      GUICtrlCreatepic or GUICtrlCreateicon ....
      or some thing as that
      and show this informations as image on it
      i think that i can do that with the 
      _GDIPlus functions
      but i couldn't find the currect way to do it
      i tried the _GDIPlus_GraphicsDrawString
      but i couldn't know how it work
      what i need is a small example that create a GUI
      and add a multy line text to it as graphic or image.
      so i need a simple way because it will changed every sec
      i hope any one can help me to do that
      global $GUI = GUICreate("text", 400, 400) global $label = GUICtrlCreateLabel(GetText(), 10, 10, 380, 380) GUISetState() do sleep(100) until GUIGetMSG() = -3 exit func GetText() return StringFormat("file name is test.mp3 \r\n total time is 00:30:00 \r\n position is 00:05:50") endFunc  
    • 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.
       
×
×
  • Create New...