Man*_*nak 0 python string list-comprehension list
我有一个这样的字符串
s = 'a,s,[c,f],[f,t]'
Run Code Online (Sandbox Code Playgroud)
我想将其转换为列表
S = ['a','s',['c','f'],['f','t']]
Run Code Online (Sandbox Code Playgroud)
我尝试使用 strip()
d = s.strip('][').split(',')
Run Code Online (Sandbox Code Playgroud)
但它没有给我想要的输出:
output = ['a', 's', '[c', 'f]', '[f', 't']
Run Code Online (Sandbox Code Playgroud)
您可以使用ast.literal_eval(),首先将每个元素用引号括起来:
>>> qs = re.sub(r'(\w+)', r'"\1"', s) # add quotes
>>> ast.literal_eval('[' + qs + ']') # enclose in brackets & safely eval
['a', 's', ['c', 'f'], ['f', 't']]
Run Code Online (Sandbox Code Playgroud)
如果您的元素可以包含非单词字符,您可能需要调整正则表达式。
这仅适用于您的输入字符串遵循 Python 表达式语法或足够接近以机械方式转换为 Python 语法(如我们上面通过添加引号和括号所做的那样)。如果此假设不成立,您可能需要考虑使用解析库。(你也可以手工编写一个递归下降解析器,但这可能比仅仅使用解析库需要更多的工作来正确完成。)
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |