gpt4 book ai didi

Python:使用正则表达式捕获数据

转载 作者:行者123 更新时间:2023-12-02 03:29:29 24 4
gpt4 key购买 nike

我想请求你的帮助。

我有一大段数据,如下所示:

     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)

但是,它没有找到我需要的东西。你可以帮帮我吗?我知道我可以在没有正则表达式的情况下处理文件,使用逐行迭代器并检查“:”符号,但是文件太大,无法以这种方式处理它(如果您知道如何在没有正则表达式的情况下快速处理它,这也将是正确答案,但首先想到的太慢)。

提前致谢!

附注文件的规范形式如下所示:

a
b : c 901
d : e sda

每个部分都以一个单词开始,然后是属性行(在两个空格之后),属性用(“:”)分隔,然后是属性行或带有单个单词的行。禁止使用其他空格。也许会更容易。

最佳答案

这里真的有必要使用正则表达式吗?试试这个伪代码:

result = {}

last = None
for _line in data:
line = _line.strip( ).split( ":" )
if len( line ) == 1:
last = line[ 0 ]
if last not in result:
result[ last ] = []
elif len( line ) == 2:
obj = [ line[ 0 ].strip( ), line[ 1 ].strip( ) ]
result[ last ].append( obj )

我希望我正确理解你的数据结构。

关于Python:使用正则表达式捕获数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14872504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com