2017-05-23 40 views
0

我有从bash的字符串类型列表,它看起来像这样:转换字符串列表,以纯列表在Python

INP =“[”一”,‘二’,‘三’,‘四’, “five”]“

输入来自bash脚本。 在我的Python脚本,我想将其转换为正常的Python列表格式为:

[“一”,“二”,“三”,“四有”,“五”]

其中所有的元素都是字符串,但是整个元素被表示为列表。

我试过了:list(inp) 它不起作用。有什么建议么?

+2

有一个看看[ast.li teral_eval](https://docs.python.org/3.6/library/ast.html#ast.literal_eval)。 –

回答

3

试试这个代码,

import ast 
inp = '["one","two","three","four","five"]' 
ast.literal_eval(inp) # will prints ['one', 'two', 'three', 'four', 'five'] 
+0

谢谢,这工作ast.literal_eval() – Pranay

3

看一看ast.literal_eval

>>> import ast 
>>> inp = '["one","two","three","four","five"]' 
>>> converted_inp = ast.literal_eval(inp) 
>>> type(converted_inp) 
<class 'list'> 
>>> print(converted_inp) 
['one', 'two', 'three', 'four', 'five'] 

注意,你原来的输入字符串是不是有效的Python字符串,因为它"["后结束。

>>> inp = "["one","two","three","four","five"]" 
SyntaxError: invalid syntax 
+0

谢谢,这工作ast.literal_eval() – Pranay

1

该解决方案使用re.sub()str.split()功能:

import re 
inp = '["one","two","three","four","five"]' 
l = re.sub(r'["\]\[]', '', inp).split(',') 

print(l) 

输出:

['one', 'two', 'three', 'four', 'five'] 
1

可以使用替换和拆分为以下几点:

>>> inp 
"['one','two','three','four','five']" 

>>> inp.replace('[','').replace(']','').replace('\'','').split(',') 
['one', 'two', 'three', 'four', 'five'] 
相关问题