2016-01-22 91 views
0

我正在嘗試使用正則表達式並按預定義的字符分割它,然後提取返回列表的最終值。提取分割字符串的列表中的最後一個元素

例如,我的字符串可以採取以下形式:

name 
WAYNE.ROONEY.226 
ROSS.BARKLEY.HELLO.113 
ADAM.A122 

Pythonically,我想要做的是:

for x in list: 
    my_val = x.split('.')[-1] #Return the last element of the list when split on . 

例如所需的輸出:

name       value 
WAYNE.ROONEY.226    226 
ROSS.BARKLEY.HELLO.113  113 
ADAM.A122     A122 

任何人都可以提供任何指針在Hive或Impala請嗎?

如果我能創造這是一個視圖,理想情況下,這將是完美的,但也很高興與產生它的實際輸出,然後再上傳到表

謝謝!

回答

1

對於蜂巢:

select regexp_extract(NAME, '\\.([^\\.]+)$', 1) as VALUE 
from WHATEVER 

而且pleeeease [編輯]學習正則表達式的力量...

+0

我給它一個嘗試,當我回到辦公室。我沒有閱讀文檔,碰到'split',但無法工作來提取它返回的數組的最後一個元素。我認爲你的答案也行不通 - 你總是提取第一個索引,挑戰是提取* last *元素,這是動態的和未知的。 – Henry

+0

正則表達式(使用Java語言)翻譯爲「獲取點和字符串結束之間的所有非點字符」,所以根據定義只能有一個匹配...使用「sed」命令行,整個「regexp_extract」東西的等價物將是'/^.* \。\([^ \。] [^ \。] * \)$/\ 1 /'在舊式語法中。 –

+0

當涉及到操作字符串時,通常可以使用幾個正則表達式用一行代替幾十行程序代碼。好的,這有點神祕,但它有效。當你想要做的就是清理一個輸入文件,並且「sed」會發生變化。 –

相關問題