我想请你帮忙。
我有一大段数据,如下所示:
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的行一个字。我无法创建正确的正则表达式来以这种形式捕获它:
{
"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
每个部分都以一个单词开头,然后是属性行(在两个空格之后),属性之间用 (" : ") 分隔,然后是属性行或单个单词的行。禁止使用其他空格。可能会更容易。