2017-05-02 5 views
1

私はPythonにはまったく新しく、この正確な問題を探すために無駄に試しました - 私はいくつかの同様の問題を見つけることができますが、それからさらに遠ざかる。Pythonの文字列から複数のデータポイントをキャプチャします

私の全体的な目標は、多数のフォームから特定のデータポイントを収集してcsvにエクスポートすることです。私は.txtファイルをPythonに1つの巨大な文字列(おそらく最高のものではない)として持っていますが、今はそれらのデータポイントを収集することに固執しています。それらはすべて静的言語の間に置くことができますが、これまでは複数ではなく単一のインスタンスを取得する方法しか見つけていませんでした。それはこれの拡張版です。

horrible_string = 'stuff KNOWN START first data to collect KNOWN END further stuff KNOWN START second data to collect KNOWN END' 

私は「収集するための最初のデータ」を収集することができますが、私の素人コードはそこで終了 - 私は外の「収集するための最初のデータ」と「収集する第二のデータ」の両方を取得する必要がありますこの文字列(理想的には、後でcsvに書き出すことができる形式にしてください)。

上記の例では、収集する必要があるいくつかの/多くのデータポイントがあります(上記の例では、「既知の開始点」と「終了点」)。ただし、コアコードを理解すれば、すべての時間を無駄にしないでください。私がRegExを学ばなければならないものか、それとももっと簡単な方法がありますか?

答えて

3

正規表現を学びます。

これらは、開発者としてのすべての人生をお手伝いします。

だからimport re

そして実際に、それは難しいことではありません。https://docs.python.org/3/howto/regex.html

horrible_string = 'stuff KNOWN START first data to collect KNOWN END further stuff KNOWN START second data to collect KNOWN END' 
m = re.findall('KNOWN\ START\ (.*?)\ KNOWN\ END', horrible_string, re.DOTALL) 
print(m) 

# => ['first data to collect', 'second data to collect'] 
+0

ありがとうございました、これはterrifically助け、正しい方向に私を操縦する - 私は正規表現を学習に取り組んでいると私は」もう少し一緒に。現時点では、ここでnull値をキャプチャする方法についてはまだ混乱しています(これはcsvに正しくエクスポートするための要件です)。 nullの場合、これは空白をひどく解釈します。例: worse_string = 'varA:はいvarB:いいえvarA:varB:はい' 2番目のvarAに値が指定されていないため、実際にはvarBの次のインスタンスとの間のすべての値が取得されます。それでも最初に修正するための十分な正規表現を学ぶと更新されます... – ThoureaulyRekt

+0

実際には1つの空白が拾われないように見えますが、複数の空白があります - 拾う作業をしようとしています個々のスペースは、欠落したエントリで問題を引き起こす可能性があるインスタンスが存在するためですが、まだそれを見ることはできません。 – ThoureaulyRekt

+1

完全に動作するスクラッチは馬鹿だった。美しいCSVにエクスポート! – ThoureaulyRekt

関連する問題