私はクイズアプリを書いていますし、次のようにシンプルなネストされた箇条書きのリスト形式で質問+回答をdata.txtをファイルからJSONなど複数の選択肢の質問を抽出するために探しています:pythonとRegExを使用して簡単な箇条書きリストからJSONデータを抽出しますか?
data.txtを:
1. Der Begriff Aerodynamik steht für Luft und Bewegung.
Was entsteht, wenn man sich durch die Luft bewegt?
a) Die Reibung der Luftteilchen am Körper verursacht einen Luftwiderstand.
b) Je höher die Geschwindigkeit durch die Luft ist, desto mehr Luftkraft entsteht.
c) Die Luft bekommt merklich Substanz und wirkt mit ihrer Kraft
auf die ihr gebotene Form/Fläche ein.
d) Alle Antworten sind richtig.
2. Welcher Effekt wird durch Luftströmung um einen Körper mit einer der folgenden Formen erzeugt?
a) Eine Tropfenform hat einen geringen Luftwiderstand.
b) Eine hohle Halbkugel (Rundkappenreserve) hat einen hohen Luftwiderstand.
c) Ein Flächenfallschirmprofil setzt die Luftströmung durch Sog- und Druckwirkung
in Auftriebsenergie um.
...
(注:質問と回答の両方に改行があるかもしれません)
私が抽出したい希望JSONフォーマットは以下の通りです:
[
{
"number": 1,
"question": "Der Begriff Aerodynamik steht für Luft und Bewegung. Was entsteht, wenn man sich durch die Luft bewegt?",
"a": "Die Reibung der Luftteilchen am Körper verursacht einen Luftwiderstand.",
"b": "Je höher die Geschwindigkeit durch die Luft ist, desto mehr Luftkraft entsteht.",
"c": "Die Luft bekommt merklich Substanz und wirkt mit ihrer Kraft auf die ihr gebotene Form/Fläche ein.",
"d": "Alle Antworten sind richtig."
},
{
"number": 2,
"question": "Welcher Effekt wird durch Luftströmung um einen Körper mit einer der folgenden Formen erzeugt?",
"a": "Eine Tropfenform hat einen geringen Luftwiderstand.",
"b": "Eine hohle Halbkugel (Rundkappenreserve) hat einen hohen Luftwiderstand.",
"c": "Ein Flächenfallschirmprofil setzt die Luftströmung durch Sog- und Druckwirkung in Auftriebsenergie um.",
"d": "Alle Antworten sind richtig."
}
]
私はdata.txtをを読んで、正規表現の一致を使用することにより、簡単なPythonスクリプトでこれを行うことができるように期待していましたそれに応じてデータを取得してJSONに変換し、それをファイルに書き戻します。
正規表現を調べましたが、データをJSON形式に変換するために一致する正規表現を取得する必要があるRegExを把握するのに苦労しました。
どのようなRegExをお探しですか?あるいは、data.txtファイルから質問データをJSONとして抽出する方が良いでしょうか?
、それははるかに簡単だった場合、私はまた..
おかげで多くのことをより直接的に、元の箇条書きリスト形式の簡単なネストされたデータ構造と一致するJSON形式で幸せになります。
この問題に取り組むには、自分自身に質問することができます。私が必要とするすべての部分をユニークにするには?たとえば、質問には数字とドットで一意にマークされます。そしてスペース。答えは、スペース、文字、括弧、スペースでマークされています。それぞれの正規表現は '[0-9] + [。] \ s'と' \ s [a-z] [)] \ s'です。これらの正規表現を使用すると、1つの質問チャンク(回答を含む)または最初の質問テキストを検索し、残りの部分を自分でプログラムすることができます。グループをご覧ください(https://docs.python.org/2/library/re.html#re.MatchObject)。グループ – Munchhausen
私の最初の提案の例は、こちらをご覧ください:https://regex101.com/r/fT8vD0/1 – Munchhausen