Autor
|
Tema: Cambiar una o varias palabras dentro de un TXT (Leído 3,779 veces)
|
VTRPE
Desconectado
Mensajes: 4
|
Buenas tardes, he intentado, sin éxito, varias formas de hacer esto con algún script, pero no me ha dado resultado que buscaba.
El TXT realmente es un subtitulo SRT, solo necesito cambiar una palabra (o algunas) pongo un ejm: (subtitulo .SRT en archivo .TXT)
1 00:00:01,550 --> 00:00:04,420 vinieron los dos
2 00:00:04,710 --> 00:00:07,120 llegaron dos personas
3 00:00:07,120 --> 00:00:08,680 varios modos de llegar
4 00:00:08,680 --> 00:00:12,010 dos personas salieron
5 00:00:13,120 --> 00:00:14,680 calcularon doscientos
Quería (por ejm,) poner en mayúscula la palabra dos, o cambiarla por el digito 02, pero en este ejemplo no lo hace correctamente.
Incluso he probado en CMD Batch y en VBScript, y este último me ha dado algún resultado positivo, aunque cambia TODAS las palabras que contienen dos, incluyendo doscientos.....
Set FSO = CreateObject("Scripting.FileSystemObject") OldTextFile = ".\temp.txt" NewTextFile = ".\1.txt" ReplaceFrom = ("dos") ReplaceTo = ("DOS") FSO.CreateTextFile(NewTextFile, 2). _ Write(Replace(FSO.OpenTextFile(OldTextFile, 1).ReadAll(), _ ReplaceFrom, ReplaceTo, 1, -1, vbTextCompare))
Algo que se me ocurre en este código, es que: ReplaceTo = ("DOS") sea tal cual, pero añadir, que si hay algún carácter antes o después de esta palabra a modificar, que no lo haga, pero no encuentro la manera de hacerlo con comodines.
Aunque soy mas de CMD, puedo empezar a usar VBS si fuera necesario, pero mis conocimientos son muy limitados en VBS, me defiendo un poco más en comandos CMD, pero no me han dado buenos resultados por el código de tiempo del subtitulo (me cambia -->)
Muchas gracias por vuestra ayuda de antemano, saludos.
|
|
« Última modificación: 8 Agosto 2022, 17:00 pm por VTRPE »
|
En línea
|
|
|
|
MCKSys Argentina
|
Algo que se me ocurre en este código, es que: ReplaceTo = ("DOS") sea tal cual, pero añadir, que si hay algún carácter antes o después de esta palabra a modificar, que no lo haga, pero no encuentro la manera de hacerlo con comodines.
Hola! Puedes probar cambiando: ReplaceFrom = ("dos") ReplaceTo = ("DOS")
por ReplaceFrom = (" dos ") ReplaceTo = (" DOS ")
Saludos!
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
VTRPE
Desconectado
Mensajes: 4
|
Muchas gracias, pero ya lo probé, en el ejm no funciona en la primera línea "vinieron los dos" Porque después de la última palabra, no hay espacio, es el final de la oración.
Al igual que, tampoco funcionaría en la cuarta línea del ejm. Porque empieza por "dos" sin espacio antes.....
El archivo de subtítulo SRT es de 3 horas de duración, por eso necesito hacerlo con un código, porque de forma manual es imposible.
No sé si se podrá indicar algún comodín o algo, para que, al encontrar un caracter cualquiera antes o después de "dos" no aplique la modificación. Al menos a mi, no se me ocurre otra forma.
|
|
« Última modificación: 8 Agosto 2022, 17:59 pm por VTRPE »
|
En línea
|
|
|
|
MCKSys Argentina
|
Hola! Prueba con el siguiente código: Set FSO = CreateObject("Scripting.FileSystemObject") OldTextFile = ".\temp.txt" NewTextFile = ".\1.txt" Set regEx = New RegExp regEx.IgnoreCase = True regEx.Global = True regEx.MultiLine = True content = FSO.OpenTextFile(OldTextFile, 1).ReadAll() ReplaceTo = "DOS" regEx.Pattern = "\b(dos)\b" content = regEx.Replace(content, ReplaceTo) FSO.CreateTextFile(NewTextFile, 2).Write(content)
Más info: https://www.tutorialspoint.com/vbscript/vbscript_reg_expressions.htmSaludos!
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
VTRPE
Desconectado
Mensajes: 4
|
Si señor, ahora sí. Mil gracias MCKSys Argentina
¿Hay alguna forma de incluir varios cambios de palabras a la vez?
La única que encontré es:
Set FSO = CreateObject("Scripting.FileSystemObject") OldTextFile = ".\temp.txt" NewTextFile = ".\1.txt" Set regEx = New RegExp regEx.IgnoreCase = True regEx.Global = True regEx.MultiLine = True content = FSO.OpenTextFile(OldTextFile, 1).ReadAll() regEx.Pattern = "\b(dos)\b" ReplaceTo = "DOS"
content = regEx.Replace(content, ReplaceTo)
regEx.Pattern = "\b(personasl)\b" ReplaceTo = "PERSONAS"
content = regEx.Replace(content, ReplaceTo) FSO.CreateTextFile(NewTextFile, 2).Write(content)
Saludos.
|
|
« Última modificación: 8 Agosto 2022, 19:48 pm por VTRPE »
|
En línea
|
|
|
|
MCKSys Argentina
|
¿Hay alguna forma de incluir varios cambios de palabras a la vez?
Hola! Puedes hacer un archivo que contenga lineas que sean: regexp, separador, cadena de reemplazo. Luego lo lees linea x linea en un bucle y vas aplicando los replace x cada linea. Saludos!
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Seleccionar con explode varias palabras
PHP
|
dimitrix
|
2
|
2,438
|
20 Junio 2012, 14:08 pm
por dimitrix
|
|
|
identificar varias palabras en una oracion
Programación Visual Basic
|
asdexiva
|
6
|
3,370
|
27 Noviembre 2014, 22:56 pm
por asdexiva
|
|
|
MOVIDO: identificar varias palabras en una oracion
Programación General
|
Eleкtro
|
0
|
1,697
|
26 Noviembre 2014, 19:33 pm
por Eleкtro
|
|
|
Ayuda con varias palabras en un string
Programación C/C++
|
kur79
|
6
|
2,643
|
11 Septiembre 2015, 11:16 am
por ivancea96
|
|
|
mofificacion de palabras dentro de un XML
Scripting
|
rralcalde
|
0
|
1,920
|
5 Marzo 2021, 13:08 pm
por rralcalde
|
|