私はあなたの助けを求めたいです。
次のような大きなデータがあります。
a
b : c 901
d : e sda
v
w : x ads
any
abc : def 12132
ghi : jkl dasf
mno : pqr fas
stu : vwx utu
説明: ファイルは、単一の単語を含む行で始まり(空白で開始でき、単語の後に空白を含めることもできます)、コロンで区切られた属性の行に続きます (空白を含めることもできます)。一つの単語。そのような形式でそれをキャッチするための正しい正規表現を作成できません:
{
"a": [["b": "c 901"], ["d", "e sda"]],
"v": [["w", "x ads"]],
"any": ["abc", "def 12132"], ["ghi", "jkl dasf"],
# etc.
}
これが私が試したことです:
regex = str()
regex += "^(?:(?:\\s*)(.*?)(?:\\s*))$",
regex += "(?:(?:^(?:\\s*)(.*?)(?:\\s*):(?:\\s*)(.*?)(?:\\s*))$)*$"
pattern = re.compile(regex, re.S | re.M)
ただし、必要なものが見つかりません。私たちを手伝ってくれますか?行ごとの反復子を使用して「:」記号をチェックして、正規表現なしでファイルを処理できることはわかっていますが、ファイルが大きすぎてこの方法で処理できません (正規表現なしで高速に処理する方法を知っている場合、これも正しい答えですが、最初に頭に浮かぶのは遅すぎます)。
前もって感謝します!
PSファイルの標準形式では、次のようになります。
a
b : c 901
d : e sda
すべてのセクションは 1 つの単語で始まり、次に属性行 (2 つの空白の後) に続き、属性は (" : ") で区切られ、次に agane 属性行または単一の単語を含む行になります。その他の空白は禁止されています。おそらくそれはより簡単になるでしょう。