2017-04-11 12 views
0

我想將下面的sed命令轉換爲python re.sub。 Sed命令基本上是從json字符串中提取access_token值。試圖將sed命令轉換爲Python re.sub

finalString=$(echo $initialString | sed -e 's/^.*"access_token":"\([^"]*\)".*$/\1/') 

我的Python代碼,我被卡在取代\ 1部分。我與價值

access_token = re.sub('^.*"access_token":"\([^"]*\)".*$',r'\1',initialString) 
print access_token 

我的工作回聲聲明如下,以取代整個字符串當我運行此我得到了價值的access_token。對於例如:如果initialString ='{"access_token":"xyz"}'輸出將是xyz

echo initialString | sed -e 's/^.*"access_token":"\([^"]*\)".*$/\1/' 
+1

什麼是'initialString'?正在發生什麼或者沒有發生什麼,這讓你問這個問題? –

回答

1

一般來說,你應該把它作爲一個規則來始終在Python中使用原始字符串作爲正則表達式。 (。具體而言,它並不重要,但在這裏它是一個很好的經驗法則)

試試這個:

access_token = re.sub(r'^.*"access_token":"([^"]*)".*$', r'\1', initialString) 
+0

這裏是工作回聲函數,我有 'echo inputString | SED -e的/^.* 「的access_token」: 「\([^」] * \)」 * $/\ 1 /'' –

+0

它的工作我的壞我傳遞了錯誤的inpuString感謝您的回答。 –

0

我的工作,你的intialString是沿東西線的假設:"other":"json","access_token":"(1234)","more":"json"

access_token = re.sub(r'^.*"access_token":"\(([^\)]*)\)".*$',r'\1',initialString) 

我注意到的問題是,你從來沒有真正捕捉任何字符\ 1引用。