2017-04-11 5 views
0

以下のSedコマンドをpython re.subに変換しようとしています。 Sedコマンドは、基本的にjson文字列からaccess_token値を抽出しています。SedコマンドをPythonに変換しようとしています

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

私のPythonコードは、私は\ 1部分を置き換えることに固執していました。私はこれは私がaccess_tokenは値を取得しています実行すると、私は値

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

次のように私の働いエコー文がある、との文字列全体を交換する必要があります。例:initialString ='{"access_token":"xyz"}'の出力がxyzになる場合。

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

「initialString」とは何ですか?何が起こっているのか、起こっていないのか、あなたはこの質問をしていますか? –

答えて

1

通常、Pythonではraw-stringを正規表現として使用することをお勧めします。 (。。具体的には、それはここでは関係ありません。しかし、それは親指の良いルールだ)

このお試しください:私はあなたのintialStringはの線に沿って何かであることを前提に取り組んでいます

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

ここに私が持っている働くecho関数があります。 'echo inputString | sed -eの/ ^。* "access_token": "\([^"] * \) "。* $/\ 1/'' –

+0

これはうまくいきませんでした。 –

0

を:"other":"json","access_token":"(1234)","more":"json"

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

私が気づいた問題は、あなたが実際に\ 1で参照する文字をキャプチャしていなかったことでした。

関連する問題