2017-11-07 12 views
-3

検索可能なデータを構築するためにドキュメントを解析しようとしています。ドキュメントには、コロンで指定された複数のキーと値のペア:があります。一部の行には、同じ行に複数のキーと値のペアがあります。トリッキーな部分は、コロンとは別に、キー名と値の両方の文字列が矛盾していることです。たとえば、コロンと値の間に1つのスペースまたは4つのスペースがあり、各値にスペースを入れることができ、同じ行内にあるキーと値のペアの間には不確定な数のスペースが存在することがあります。行から複数​​のキー値ペアを抽出する

例の文書:

Name: John Smith 
    Address: 123 Main St, Some City, ST 12345  Country: US 
    Date 1: 1/2/17 Date 2: 1/2/18 

私は抽出する必要があります:値、限り、あなたがキーに任意の数のスペースを持つことができるよう

{ 
     "Name" : "John Smith", 
     "Address" : "123 Main St, Some City, ST 12345", 
     "Country" : "US", 
     "Date 1" : "1/2/17", 
     "Date 2" : "1/2/18" 
    } 

答えて

1

との間で、指示する方法はありません値が終了して次のキーが始まるとき。たとえば、"Date 1":"1/2/17", "Date 2":"1/2/18"か、むしろ"Date 1": "1/2/17 Date", "2": "1/2/18"ですか?したがって、これ以上の前提条件がなければ、サーバーキー/値ペアを1つの行に明確に分離することはできません。

可能なキーのセットが固定されている場合は、これらをトークンとして追加して、キートークンの出現箇所とそれに続く ":"を探します。

これが失敗した場合は、キーと値の形式についていくつか前提を置くことができます。たとえば、キーは常にアルファベット文字で始まると仮定できます。 警告:そのような臨時の仮定は、しばしばフリンジケースを見落とし、不正確なデータにつながる可能性があります。

+0

私は仮定と固定キーのアプローチ(これは私が避けようとしていた)に行かなければならないと思っていますが、これも非常に乱雑になっています。私は書類を再フォーマットすることを求めますが、処理が必要な年数と年数がありますので、手動で行うことは現実的ではありません。ありがとう。 – jyore

関連する問題