Extrayendo códigos postales del Reino Unido en una nueva columna

Un usuario Pregunto ✅

richardburling

Hola

Tengo un conjunto de datos que contiene direcciones completas pero necesito el código postal extraído en una columna separada. He logrado esto en Excel usando esta fórmula: –

= DERECHA (SUBSTITUTO (B2, «», «*», LEN (B2) -LEN (SUBSTITUTE (B2, «», «»)) – 1), LEN (B2) -FIND («*», SUBSTITUTE (B2 , «», «*», LEN (B2) -LEN (SUSTITUTO (B2, «», «»)) – 1)))

La dirección tiene el siguiente formato: –

221b Baker St, Londres, NW1 6XE

He buscado en los foros y hasta ahora no puedo encontrar nada que cumpla con el requisito. He visto cómo se hace desglosando la dirección usando las funciones del delimitador en el Editor Quary y luego combinando las dos partes del código postal para crear un código postal completo, pero idealmente me gustaría una columna para la dirección completa y una separada para el código postal. .

Espero que alguien pueda ayudar.

Gracias

Ricardo.

CNENFRNL

Wikipedia presenta códigos postales en el Reino Unido en detalle; lo suficientemente interesante, también se proporcionan expresiones regulares para la validación.

https://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom

Por lo tanto, es bastante fácil extraer códigos postales con las expresiones regulares mencionadas anteriormente,

let
    RE = (regex as text, str as text) =>
    let
        html =
            "<script>
            var regex = " & regex & ";
            var str = """ & str & """;
            var res = str.match(regex);
            document.write(res)
            </script>",
        res = Web.Page(html)[Data]{0}[Children]{0}[Children]{1}[Text]{0}
    in res,

    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("XcyxCsIwFAXQX7lkztBEcE9t6aA4WCRCyBDJoxTTF0hT/H2Lg4P74TgntFZPtOFFBWOVuGSOmSWuVuH46IWXTqgGXX7zzNNOCtGPYbTKQBvzZUOhUHHb1pVS+pf2pFocukGi5ykFjhJ3nitFnPc35kV4/wE=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Addr = _t]),
    #"Added Custom" = Table.AddColumn(Source, "P.C.", each RE("/[A-Z]{1,2}[0-9][A-Z0-9]? ?[0-9][A-Z]{2}/gi", [Addr]))
in
    #"Added Custom"

Captura de pantalla 2021-07-01 000525.png

richardburling

En respuesta a CNENFRNL

@CNENFRNL gracias por tomarse el tiempo y hacer una sugerencia. Desafortunadamente, esto no es lo que estoy buscando.

Básicamente, creo que es una hoja de cálculo con más de 2000 direcciones y me gustaría separar el código postal de la cadena de direcciones. Básicamente, necesito que el Editor de consultas extraiga solo el código postal de la cadena de dirección y lo coloque en una nueva columna. Tampoco puede tener espacios ni comas en la columna. Obviamente, los códigos postales vienen en varios caracteres de longitud, por lo que no es solo un caso de usar el ‘Text.end ([Address], 8) ‘ya que esto recupera los últimos ocho caracteres.

Espero que tenga sentido.

Ricardo

Deja un comentario

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