我想问你的帮助。Python:正则表达式来捕获数据
我有一个大的数据块,它看起来像这样:
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)
但是,它没有找到我需要什么。你可以帮帮我吗?我知道我可以在没有正则表达式的情况下处理文件,使用逐行迭代器和检查“:”符号,但是文件太大而无法用这种方式处理它(如果你知道如何快速处理它,而不使用正则表达式,这也将是正确的答案,但首先想到的是太慢)。
在此先感谢!
P.S.在文件的规范形式是这样的:
a
b : c 901
d : e sda
逢节有一个字开始,然后按照属性线(双空格之后),有属性分开用(“:”),然后agane属性线或用一个单词排成一行。其他空格是禁止的。可能会更容易。
+1超清晰;整齐地陷害问题。 – Yavar 2013-02-14 10:37:16