2016-07-24 20 views
-1

変換文字列

以下
data = """ 

S3F4 
accept reply: true 

""" 

とJSONデータは、私は正規表現と検索パターンS3F4を使用し、辞書に追加することができます[{"header":{"stream":3,"function":4,"reply":True}}]

であるように私は、JSON形式に文字列を変換しています。

しかし、より一般的な解決策として使用できるより良い方法やビルド関数がありますか?すべての入力文字列のバリエーションとどのようなわからない

+0

質問は何ですか? '' SNFNが受け入れた返事:true/false "'のような文字列を "解析"するには、より良い方法がありますか? –

+0

従来の方法や 'json.loads'のようなライブラリを使うか、これは唯一の方法です – user2661518

+0

カスタムデータフォーマットを解析するための既存のライブラリはどうでしょうか? (カスタム形式ではなく、標準形式の場合は、形式に名前を付けてください)。 –

答えて

1

functionreplyを持つことができる文字stream、の範囲であるが、ここであなたが始めることができるものである。

(?P<...>...)
S(?P<stream>\d)F(?P<function>\d)\naccept reply: (?P<reply>\w+) 

named capturing groupsをしています、 \dは1桁に一致し、\w+は1つ以上の連続した英数字(およびアンダースコア)と一致します。

デモ:

>>> import re 
>>> 
>>> data = """ 
... S3F4 
... accept reply: true 
... """ 
>>> 
>>> match = re.search(r"S(?P<stream>\d)F(?P<function>\d)\naccept reply: (?P<reply>\w+)", data) 
>>> print(match.groupdict()) 
{'function': '4', 'reply': 'true', 'stream': '3'}