1

私が持っているとしましょう:

string= '{'id': '1'}'

Perl/sed のような文字列を使用して取得したい

string=id

(Perl では string=~s/{\'([a-zA-Z0-9] )\'. $)/\1/ のようになります)

Pythonでそれを行う方法を少し教えてください。正規表現の構文は似ていると思いますが、Python の構文とどのインポートを使用すればよいかわかりません。私は Python の初心者です :) ありがとうございます :-)

4

2 に答える 2

1

Python では、このreモジュールを正規表現操作に使用します。正規表現を少し変更しましたが、通常、Python で正規表現の置換を行う方法は次のとおりです。

>>> import re
>>> s = "{'id': '1'}"
>>> re.sub(r"{'([^\']*)'.*$", r'\1', string)
'id'

このsub()関数は、最初に正規表現を受け入れ、次に置換、最後に文字列を受け入れます。re モジュールのドキュメントには、さらに詳しい情報があります: http://docs.python.org/library/re.html

r引数として渡される文字列の接頭辞は、基本的に Python にそれらを「生の」文字列として扱うように指示します。この場合、ほとんどのバックスラッシュ エスケープ シーケンスは解釈されません。

于 2012-04-20T18:41:27.637 に答える
0

まず、@ PenguinCoderに同意します。これは有効なJSONであるため、JSONの処理にPythonサポートを使用することを検討する必要があります。

私はGoogleに行き、キーワードを入力しました: Python regular expressions

上位2つのヒットは次のとおりです。

http://docs.python.org/library/re.html

http://docs.python.org/howto/regex.html

あなたがそれらを読むならば、あなたは答えを見つけるでしょう。

動作するコードは次のとおりです。

import re

s = '''string= "{'id': '1'}"'''

pat = re.compile(r"\s*([^=]+)\s*=[\s'\"]*{\s*'([^']+)'")

m = pat.match(s)

if m is not None:
    id = m.group(1)
    name = m.group(2)
    result = "%s=%s" % (id, name)
    # note: could also do this: result = "%s=%s" % m.groups()
于 2012-04-20T18:54:36.397 に答える