代码之家  ›  专栏  ›  技术社区  ›  Chris Adragna

数据清理,从ALLCAPS到Title Case的后期转换

  •  0
  • Chris Adragna  · 技术社区  · 15 年前

    麦克唐纳,博士,注册会计师,III级

    有人知道一个现有的脚本可以清除所有常见的问题词吗?当然,它仍然会留下一些错误(不太常见的名称,拼写类似CamelCase,即“MacDonalz”)。

    有一个线程提出了一个相关的问题,有时触及这个问题,但没有具体解决这个问题。你可以在这里看到:

    SQL Server: Make all UPPER case to Proper Case/Title Case

    2 回复  |  直到 8 年前
        1
  •  2
  •   Mark Baker    15 年前

    不知道这是否有用

    private static function ucNames($surname) {
    //  ( O\' | \- | Ma?c | Fitz )  # attempt to match Irish, Scottish and double-barrelled surnames
        $replaceValue = ucwords($surname);
        return preg_replace('/
                            (?: ^ | \\b )       # assertion: beginning of string or a word boundary
                            ( O\' | \- | Ma?c | Fitz )  # attempt to match Irish, Scottish and double-barrelled surnames
                            ( [^\W\d_] )        # match next char; we exclude digits and _ from \w
                            /xe',
                            "'\$1' . strtoupper('\$2')",
                            $replaceValue);
    }
    

        2
  •  0
  •   Chris Adragna    15 年前

    以下是我一直在寻找的答案:

    我能够使用两个应用程序来解决我的问题。

    1. 事物,将所有大写转换为混合大写 在这个过程中 弄脏数据,留下标题 如CPA、MD、III等; 像麦当劳这样的驼色案例名称。
    2. Personator:我使用Personator将全名字段分为前缀、名字、中间名、姓氏和后缀。老实说,这还远远不够完美,但我给出的数据却相当具有挑战性(通常没有空格分隔中间名和后缀)。这个应用程序还可以做很多其他有用的事情,包括为大多数名字指定性别。它也是一个可以调用的API。

    http://www.melissadata.com/dqt/index.htm

    对我来说,Melissa数据应用程序完成了大部分繁重的工作,剩余的脏数据可以通过报告左x或右x计数在SQL中进行识别和修复--脏数据通常具有最少的唯一性,模式很容易发现和修复。