将字符串解析为元组列表

Ghi*_*taB 3 python python-2.7

输入: '(tagname1, tagvalue1),(tagname2,tagvalue2), ( tagname3, tagvalue3 ), (tag name4,tag value4)'

输出: [("tagname1", "tagvalue1"), ("tagname2", "tagvalue2"), ("tagname3", "tagvalue3"), ("tag name4", "tag value4")]

我有一个解决方案但它只在输入包含每个元素的引号时才有效: "tagname1", "tagvalue1" ...

import ast
ast.literal_eval(input_string)
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我收到: ValueError: malformed string

有任何解决方案让它工作(请看空格)?

Bur*_*lid 11

尝试使用正则表达式的另一种方法:

>>> import re
>>> s = '(tagname1, tagvalue1),(tagname2,tagvalue2), ( tagname3, tagvalue3 ), (tag name4,tag value4)'
>>> e = '\(\s?(.*?)\s?,\s?(.*?)\s?\)'
>>> re.findall(e, s)
[('tagname1', 'tagvalue1'), ('tagname2', 'tagvalue2'), ('tagname3', 'tagvalue3'), ('tag name4', 'tag value4')]
Run Code Online (Sandbox Code Playgroud)