在python中分解不同符号的字符串

在python中分解不同符号的字符串,python,regex,string,Python,Regex,String,是否可以有效地分解如下字符串: 'G:1{l:3:"cat";v:30;l:3:"dog";v:0;l:5:"horse";v:20;l:6:"rabbit";v:50;}' 请将其输入此文件以进行进一步处理: "cat", 30 "dog", 0 "horse", 20 "rabbit", 50 我尝试使用正则表达式模式和复杂循环,但没有成功。您可以使用正则表达式查找模式: import re s = 'G:1{l:3:"cat";v:30;l:3:"dog";v:0;l:5:"hors

是否可以有效地分解如下字符串:

'G:1{l:3:"cat";v:30;l:3:"dog";v:0;l:5:"horse";v:20;l:6:"rabbit";v:50;}'
请将其输入此文件以进行进一步处理:

"cat", 30
"dog", 0
"horse", 20
"rabbit", 50

我尝试使用正则表达式模式和复杂循环,但没有成功。

您可以使用正则表达式查找模式:

import re

s = 'G:1{l:3:"cat";v:30;l:3:"dog";v:0;l:5:"horse";v:20;l:6:"rabbit";v:50;}'

re.findall(r'("[A-Za-z]+");v:(\d+)', s)
# [('"cat"', '30'), ('"dog"', '0'), ('"horse"', '20'), ('"rabbit"', '50')]
使用此列表,您应该能够以您想要的格式获取它:

for row in re.findall(r'("[A-Za-z]+");v:(\d+)', s):
    print("{}, {}".format(*row))
# "cat", 30
# "dog", 0
# "horse", 20
# "rabbit", 50

可以使用以下图案,然后将其拆分:

import re

your_string = 'G:1{l:3:"cat";v:30;l:3:"dog";v:0;l:5:"horse";v:20;l:6:"rabbit";v:50;}'

result = [val.split('";v:') for val in re.findall('l:\d:"(\w+\";v:\d+);', your_string)]
输出

[['cat', '30'], ['dog', '0'], ['horse', '20'], ['rabbit', '50']]

你可以试试这个伴侣

\"[A-Za-z]+\"|(?<=v:)\d+
\“[A-Za-z]+\”|(?您可以使用:

import re
x = 'G:1{l:3:"cat";v:30;l:3:"dog";v:0;l:5:"horse";v:20;l:6:"rabbit";v:50;}'
r = re.findall(r'(".*?");v:(\d+)', x)
for y in r:
    print(f"{y[0]}, {y[1]}")

输出:

"cat", 30
"dog", 0
"horse", 20
"rabbit", 50


您尝试的show usIt遵循一种模式,因此使用正则表达式进行解析非常容易。我使用了模式“([”])\“w+”来提取名称,但我不知道如何同时提取两个模式time@presa没关系,我只是想看看你试过什么。只需检查下面的答案。我还添加了一个答案和解释。@PedroLobito我想是的。他评论的正则表达式似乎捕捉了
我不认为
是结果的一部分。您可以使用非捕获组。为什么要转义所有这些不同的字符?这是不必要的。@TheIncorrigible1:正确,已修复。@presa总是乐于帮助:)