修改字串值

本節說明如何使用一些技巧,將資料集中的文字值標準化。在 Cloud Dataprep by TRIFACTA® INC. 中,您可以使用下列技巧解決將文字和其他非數字值標準化時遇到的常見問題。

將資料欄轉換為字串

對於個別值的操控,搭配字串類型通常最容易,因為這是最具彈性的類型。視您的方法而定,您可以選擇將某些資料欄轉換為字串類型:

轉換名稱 Change column type
參數:資料欄 col1,col2, col3
參數:新類型 'String'

詳情請參閱有效資料類型字串一文。

可用的字串函式

您可以套用其中一個可用的字串函式,藉此編輯資料欄中的值。您可以針對任何可用的字串函式修改下列轉換:

轉換名稱 Edit column with formula
參數:資料欄 myCol
參數:公式 MyStringFunction($col)

提示:$col 值可讓您參照目前的資料欄,如果您打算將轉換套用到多個資料欄,這種做法特別有用。

詳情請參閱字串函式

範例 - 清除字串

在以下範例中,您可以看到資料集裡的每一列字串值之間都有些微差異。「說明」資料欄提供了這些差異的說明。

  • 部分字元 (如 Tab 鍵) 無法以此格式表示。
字串說明
My String基本字串:「My String」
My String extra基本字串 +「extra」
My String基本字串前有空格
My String 基本字串後有空格
MyString基本字串的兩個單字之間沒有空格
My String基本字串的兩個單字之間有兩個空格
My String基本字串 + Tab 鍵字元
My String
基本字串 + 回車字元
My String
基本字串 + 換行字元

匯入這個資料並略微清理後,應如下所示:

圖:匯入後的資料範例

注意事項:

  • 您可以在匯入資料中看到空格被劃分標示出來。尤其是帶有兩個空格的行項目也精確地呈現於資料格線中。
  • 換行、回車、Tab 鍵和其他看不見的字元則以圖示表示。

如要將這些文字值正規化,您可以使用本頁列出的一些技巧,來比對這個資料集裡有問題的字串值,然後視需要更正。下面各節會說明識別比對項目和清理資料的各種技巧。

修剪字串

注意:除非空格對字串資料的意義與用法有特殊涵義,否則在開始比對資料之前,您應該先執行 TRIM 轉換,移除字串開頭和尾端的空格。

轉換字串時,移除字串開頭和結尾的空白字元是關鍵步驟。針對上述資料集,您可以使用以下指令來移除這些空白字元:

轉換名稱 Edit column with formula
參數:資料欄 *
參數:公式 TRIM($col)

上述轉換會使用下列適用於某些轉換 (如 set) 的特殊值:

特殊值說明
*在資料欄文字方塊中,您可以使用這個萬用字元來參照資料集裡所有的資料欄。
$col在轉換中參照多個資料欄時,這個特殊值可允許您在替換值中參照來源資料欄。

預覽資料如下所示,其中有五個字串經過修改後,現在與基本字串相符:

圖:修剪資料以提高相符率

若要移除所有空白字元,包括字元之間的空格,您可以使用 REMOVEWHITESPACE 函式。請參閱 REMOVEWHITESPACE 函式一文。

使用遺漏值或不相符值預設

Wrangle 這個平台語言會在選取的資料內容中提供預設以識別遺漏或不相符的值。

提示:在資料欄直方圖中,按一下遺漏或不相符的類別可觸發一組建議。

遺漏值預設:以下轉換會將遺漏的網址值替換成文字字串 http://www.example.com 。預設的 ISMISSING([Primary_WebSite_or_URL]) 可識別指定資料欄中遺漏資料的資料列:

轉換名稱 Edit column with formula
參數:資料欄 Primary_Website_or_URL
參數:公式 IF(ISMISSING([Primary_Website_or_URL]),'http://www.example.com',$col)

詳情請參閱尋找遺失資料一文。

注意:如果資料欄的資料類型是網址,則替換文字字串必須是有效網址,否則系統會將新資料登錄為與資料類型不符。

不相符值預設:這個轉換會將 Zip 資料欄中不符合 Zipcode 資料類型的所有值轉換成 00000。在此案例中,預設的 ISMISMATCHED(Zip, ['Zipcode']) 會在比對 Zipcode 資料類型後,識別資料欄中的不相符值:

轉換名稱 Edit column with formula
參數:資料欄 Zip
參數:公式 IF(ISMISMATCHED(Zip, ['Zipcode']),'00000',$col)

詳情請參閱找出無效資料一文。

移除特定的子字串

範例資料中的項目含有額外的字:My String extra。您可以使用簡單的取代指令來移除:

轉換名稱 Replace text or patterns
參數:資料欄 String
參數:尋找 ' extra'
參數:替換值 ''
參數:比對所有出現的值 true

global 參數會將替換項目套用到儲存格值中找到的所有例項。否則替換項目只會套用到第一個例項。

替換雙空格

有多種方式可以從文字值中移除雙空格或任何模式。為取得最佳結果,此變更應僅限於個別資料欄。

注意:若要比對長度很短的字串模式,應仔細定義比對範圍。例如,若要從資料集裡移除雙空格,應將要處理的資料欄限定為含有字串值的資料欄。將變更套用於資料集裡的所有資料欄,可能會損害有意義的雙空格用法,如 JSON 資料欄位中的雙空格。

轉換名稱 Replace text or patterns
參數:資料欄 String
參數:尋找 ' '
參數:替換值 ''
參數:比對所有出現的值 true
  • 上述的「尋找」字詞包含一個有兩個空格的字串。

    提示:如果您想找出兩個以上的空格,可在「尋找」參數中使用以下 Cloud Dataprep 模式:

    `( )+`
  • 「替換」字詞未包含任何空格。

拆分 CamelCase

CamelCase 是指移除多個單字之間的空格,然後將這些單字聯結在一起後形成的文字。在範例資料中,MyString 項目即為 CamelCase 的範例。

注意:規則運算式是功能非常強大的模式比對工具。如果在轉換中未適當指定規則運算式,可能會造成意外結果。請謹慎使用這些運算式。

您可以使用 Cloud Dataprep 模式來拆分資料欄值中的 CamelCase 項目。下列轉換使用規則運算式來識別一組值中的模式:

轉換名稱 Replace text or patterns
參數:資料欄 String
參數:尋找 `({alpha})({upper})`
參數:替換值 '$1 $2'
參數:比對所有出現的值 true

第一個轉換指令會找出大寫字母後接小寫字母的所有例項。每個例項會替換成空格,後面再接上找到的字串 ($2)。詳情請參閱文字配對一文。

透過單字縮減字串

移除最後一個字:

例如,您必須移除字串中的最後一個字詞,以及該字詞前面的空格。您可以使用下列 replace 轉換來完成此作業:

轉換名稱 Replace text or patterns
參數:資料欄 String
參數:尋找 ` {alpha}+{end}`
參數:替換值 ''
參數:比對所有出現的值 true

但在預覽上述指令的結果時,您可能會發現指令沒有考慮到結尾的標點符號。例如,Cloud Dataprep 模式沒有擷取到值尾端的句點、驚歎號和問號。如要擷取這些值,則必須擴充「尋找」參數:

轉換名稱 Replace text or patterns
參數:資料欄 String
參數:尋找 ` {alpha}+({[?.!;\)]}|){end}`
參數:替換值 ''
參數:比對所有出現的值 true

第二個版本在 on 參數值的中間插入了擷取群組,如括弧中的指定內容:

  • 括號-冒號標記法表示此時可能會出現在模式中的一組可能個別字元。
    • 請注意擷取群組中右括弧前的反斜線。這個值用來逸出值,因此,系統會將這個括弧解譯為另一個字元,而不是擷取群組的結尾。
  • 垂直分隔號 (|) 表示邏輯「OR」,表示可能會出現指定的個別字元或垂直分隔號後面的值。
  • 由於找不到垂直分隔號後面的值,因此這個擷取群組會尋找行尾的值,不論有沒有附標點符號。
  • 擷取群組方法會將字元順序組合在一起做為比對模式的一部分,然後再透過程式在任何替換值中參照。詳情請參閱擷取群組參考資料一文。

減少單字總數:

您需要將資料欄中的每個值縮減為最多兩個字詞。您可以使用以下指令,透過 Cloud Dataprep 模式的擷取群組識別前兩個字詞,接著在捨棄資料欄值的其餘部分後將該模式寫回資料欄:

轉換名稱 Replace text or patterns
參數:資料欄 String
參數:尋找 `{start}({alpha}* )({alpha}*) ({any}*{end})`
參數:替換值 '$1$2'
參數:比對所有出現的值 true

針對「尋找」模式:

  • start 模式可識別 String 資料欄中每個值的開頭。
  • 兩個 alpha 擷取群組會識別字串中的前兩個字詞。請注意,第二個擷取群組後的空格不在擷取群組的指定範圍內;如果它是擷取群組的一部分,則會在替換值中寫入結尾空格。
  • 最後的擷取群組會識別儲存格中值的其餘部分。
    • any 會擷取任何單一字元。
    • 星號萬用字元會擷取 any 字元到值的 end 之間所有的值。

其他字串清除轉換

修整文字的空格

您可以透過轉換修整個別資料欄中的空格字元。套用至字串值的 TRIM 函式可移除前置及後置空格:

轉換名稱 Edit column with formula
參數:資料欄 myCol
參數:公式 TRIM(myCol)

如要將這個函式套用至資料集中的所有資料欄,您可以使用以下方式:

轉換名稱 Edit column with formula
參數:資料欄 *
參數:公式 TRIM($col)

注意事項:

  • 星號 (*) 是萬用字元,代表所有可能的值。在這種情況下,它會符合資料集中的所有資料欄名稱。
  • 您可能需要移動資料欄或使用範圍值,才能將此轉換僅套用至非數字資料欄類型。
  • $col 項目代表目前資料欄的參照。因此,對於套用此轉換的任何資料欄,系統將從資料欄本身擷取來源值,然後進行修整。

在某些情況下,您可能希望刪除字串中的所有空格字元,包括單字或數字之間的空格:

轉換名稱 Edit column with formula
參數:資料欄 *
參數:公式 REMOVEWHITESPACE($col)

移除空格

如有需要時,您可以移除值資料欄中的所有空格。

注意:此轉換與 TRIM 函式不同,後者只會移除字串開頭和尾端的空格。此轉換會移除所有空格,包括字串中間的空格。

提示:對於某些字串比較函式,如果比較不含空格的字串,效果會較好。

轉換名稱 Remove whitespace
參數:資料欄 name
參數:格式 Remove all whitespace

移除符號

下列轉換會移除字串值中的所有非英數符號,包括:

  • 標點符號
  • 數值指示 ($、% 等)

注意:可能不會移除重音字元。如果此函式無法移除特定符號,您可能需要手動移除這些符號,或變更資料集上的輸入編碼。詳情請參閱匯入資料頁面一文。

轉換名稱 Remove symbols
參數:資料欄 *
參數:格式 Remove symbols

移除重音

下列轉換會將所有重音字元 (如「ä」) 轉換為無重音的字元 (如「a」)。

轉換名稱 Remove accents from text
參數:資料欄 *
參數:格式 Remove accents

修剪引號

將某些檔案匯入應用程式時,在部分或全部資料欄中可能仍會保留前置及後置引號。您可以使用下列轉換,將這些引號從所有資料欄中移除:

注意:系統不會移除出現在字串值中間的引號,也不會移除單引號 (如所有格符號)。

轉換名稱 Trim quotes
參數:資料欄 *
參數:格式 Trim leading and trailing quotes

填充值

將前置字串或後置字串新增到字串

您可以將固定的前置或後置字串新增到字串值中。下列轉換會將 -0000 新增到文字版本的 Zipcode 資料欄中:

轉換名稱 Add suffix to text
參數:資料欄 txtZipCode
參數:格式 Add suffix
參數:要新增文字 '-0000'

標準化字串值

標準化大小寫

您可以使用下列步驟,將資料欄中的所有文字值設為大小寫相同。

小寫:

轉換名稱 Edit column with formula
參數:資料欄 myStrings
參數:公式 LOWER(myStrings)

大寫:

轉換名稱 Edit column with formula
參數:資料欄 myStrings
參數:公式 UPPER(myStrings)

適當的 (語句) 大小寫:

轉換名稱 Edit column with formula
參數:資料欄 myStrings
參數:公式 PROPER(myStrings)

標準化字串長度

填充字串值

如果所有資料欄的值長度都必須相同,可使用的一個技巧是,在每個字串值前面充分填充,讓資料欄中的所有字串長度都一樣。

此轉換會將足夠的空格填充到每個資料列值,直到每個值的長度都是 50 個字元為止。

注意:超過指定上限的字串會保持不變。您可以使用 LEFTRIGHT 函式,變更過大字串的大小。如下所示。

轉換名稱 Pad text with leading characters
參數:資料欄 MyStrings
參數:格式 Pad with leading characters
參數:要填充的字元 ' '
參數:長度 50

固定長度字串

您可以將一個資料欄或一組資料欄的大小上限設為固定的字串長度,例如:

轉換名稱 Edit column with formula
參數:資料欄 col1,col2
參數:公式 IF(LENGTH($col)>32,LEFT($col,32),$col)

在上述內容中,假如任一資料欄的長度超過 32 個字元,則資料欄值會設為最左側的 32 個字元。如果是較短的字串,則整個字串都會用到。

詳情請參閱管理字串長度一文。

管理子字串

您可以使用下列函式,找出字串中的值。這些函式可當成「新公式」或「編輯公式」轉換的一部分,以用來建立或編輯資料欄內容:

函式名稱說明
LEN 函式

傳回指定字串的字元數。字串值可以是資料欄參照或字串常值。

FIND 函式

傳回輸入字串中,指定相符字串所在位置的索引值。系統會從左至右進行搜尋。

RIGHTFIND 函式

傳回輸入字串中,最後一個相符字串所在位置的索引值。系統會從右至左進行搜尋。

LEFT 函式

依照參數的指定,比對字串中最左邊的字元集。字串可以是資料欄參照或字串常值。

RIGHT 函式

依照參數的指定,比對字串中右邊的字元集。字串可以是資料欄參照或字串常值。

SUBSTRING 函式

依據使用者定義的字串起始及結束索引值,比對部分或完整字串。

SUBSTITUTE 函式

使用字串取代在來源中找到的字串常值或模式。

比較字串

此應用程式支援多種比對字串的方法。詳情請參閱比較字串一文。

重設類型

將非文字值修改為字串之後,請記得將這些值轉換回原本的類型。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Google Cloud Dataprep 說明文件
需要協助嗎?請前往我們的支援網頁