Power Query: elimine todas las palabras con más de 3 caracteres en una celda

Un usuario Pregunto ✅

Raymond

Hola,

Estoy haciendo un trabajo de limpieza de texto y quiero eliminar dinámicamente todas las palabras con hasta 3 caracteres. Por lo tanto, he creado una lista dinámica de palabras con más de 3 caracteres.

Sin embargo, no puedo reemplazarlo con esa lista usando el botón reemplazar en la consulta de energía. ¿Alguien tiene alguna idea?

Geradav

En respuesta a Raymond

@raymond

Vea a continuación una posible solución

Table.TransformColumns(
    #"name of previous step",
    {
        "columnName",
        each 
            let
                vTextSplit = Text.Split(_, " "),
                vListSelect = List.Select(vTextSplit, each Text.Length(_) >3),
                vResult = Text.Combine(vListSelect, " ")
            in vResult,
        type text
    }
)

Déjanos saber si eso funciona para ti.

David

Raymond

Gracias chicos.

La idea es que hay varias palabras en una celda. Entonces tengo un texto de la siguiente manera «el camino puede ser bueno para los negocios» Quiero que vuelva «buen negocio» solamente.

Geradav

En respuesta a Raymond

@raymond si desea el resultado en una columna diferente, utilice lo siguiente

Table.AddColumn(
    #"name of previous step",
    "newColumnName",
    each 
        let
            vTextSplit = Text.Split([columnName], " "),
            vListSelect = List.Select(vTextSplit, each Text.Length(_) >3),
            vResult = Text.Combine(vListSelect, " ")
        in vResult,
    type text
)

Geradav

En respuesta a Raymond

@raymond

Vea a continuación una posible solución

Table.TransformColumns(
    #"name of previous step",
    {
        "columnName",
        each 
            let
                vTextSplit = Text.Split(_, " "),
                vListSelect = List.Select(vTextSplit, each Text.Length(_) >3),
                vResult = Text.Combine(vListSelect, " ")
            in vResult,
        type text
    }
)

Déjanos saber si eso funciona para ti.

David

Raymond

En respuesta a Geradav

@Geradav wow, eso fue tan rápido y funciona tan bien. ¡Gracias!

Geradav

En respuesta a Raymond

@raymond Muy bien, esa es una buena información complementaria

Geradav

@raymond Creo que podría ajustar el código M con algo como sigue en la columna donde desea deshacerse de su texto de «3 caracteres»:

Table.TransformColumns(
    #"name of previous step",
    {
        "columnName",
        each if Text.Length(_) <= 3 then "" else _
    }
)

Déjanos saber si eso funciona para ti

David

PhilipTreacy

Hola @raymond

¿Quieres mantener las palabras con más de 3 caracteres o eliminarlas? El título del problema y el texto de la pregunta dicen cosas diferentes.

Puede usar un paso como este para mantener filas donde [ColumName] contiene palabras con 3 o menos caracteres

= Table.SelectRows(#"PreviousStep", each Text.Length([ColumnName]) <=  3)

Pero si esto no es lo que desea, publique algunos datos de muestra y ejemplos del resultado esperado.

Saludos

Phil

Raymond

En respuesta a PhilipTreacy

Gracias @PhilipTreacy

tienes razón, podría ser más específico.

Los datos de muestra son los siguientes:

La columna A original incluye:
«el camino puede ser bueno para los negocios»

La columna B esperada debería resultar:

«buen negocio»

Elimine todas las palabras con menos de 3 caracteres y conserve las que tengan más.

Estaba pensando en ti, un reemplazador puede iterar a través de una lista de valores y reemplazarlos, pero no pudo encontrarlo. Quizás haya otra solución.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *