2017-01-25 14 views
0

私は、それぞれが別々の属性を取得するには、以下の文字列を分割したい:Python - 正規表現を使って文字列を分割する方法は?

String_one: 'archived': True, 'id': '30znq1', '_has_fetched': True 
String_two: \\'hidden\\': False, \\'user_reports\\': [], \\'num_reports\\': None 

私は属性のすべてはどちらか「 『『で終わることを知っているか』、\\』」 当初、私はちょうど2つを使用していましたstring.spilt()

1) line.split(', \'') 
2) line.split(', \\\'') 

これらの両方の仕事は、私は、大量のデータで働いていますし、これらの両方は非常に一般的であり、パターンは、それが想定されていなかったデータのどこかにマッチしたました。

は、だから私が代わりにre.splitを試してみました:それは文字単一引用符と続いている場合、正規表現が最初に「、\ '」と、この上の分割を見つけることを意味している

reg_split_no_esc = re.compile(', \'(.*\': .*)') 
reg_split_esc = re.compile(', \\\'(.*\\\': .*)') 

line = re.split(reg_split_esc, line) 
line = re.split(reg_split_no_esc, line) 

コロンは、 "、\ '"に続くものを捕まえることを意味します。

reg_split_no_escは最初の分割条件で分割されますが、もはやそうではありません。もう1つのパターンは機能していません。

すべてのヘルプは本当に

EDITいただければ幸いです:ちょうど

_uniq': None 

suggested_sort': None, 'secure_media_embed': {} 'report_reasons': None, '_params': {} 
+0

"生の"接頭辞がここに役立つでしょう。 –

+1

パターン内の文字をエスケープする必要がありますか? – kopo222

+0

私はrawフラグを追加して\を整理しましたが、私はまだ同じ問題を抱えています – kopo222

答えて

2

: 私の最初の正規表現は動作しますが、それは最初の要素だけを分割し、それは次のようになりますので、残りの未分割の葉を

:完全のために、私はそれが最終的なパターンがどのように見える lookahead assertion

た、答えを考え出しました

乾杯

関連する問題