Python字符串列出最佳实践

时间:2013-08-06 10:15:21

标签: python string list

我有一个像"['first', 'sec', 'third']"

这样的字符串

将此转换为字符串列表的最佳方法是什么。 ['first', 'sec', 'third']

2 个答案:

答案 0 :(得分:10)

我使用literal_eval(),这是安全的:

  

安全地评估表达式节点或包含Python的字符串   表达。提供的字符串或节点可能只包含   以下Python文字结构:字符串,数字,元组,列表,   dicts,booleans和None。

     

这可以用于安全地评估包含Python的字符串   来自不受信任来源的表达式,无需解析   重视自己。

>>> import ast
>>> ast.literal_eval("['first', 'sec', 'third']")
['first', 'sec', 'third']

除了文字表达式之外,它不会评估任何内容:

>>> ast.literal_eval('"hello".upper()')
...
ValueError: malformed string

>>> ast.literal_eval('"hello"+" world"')
...
ValueError: malformed string

答案 1 :(得分:1)

如果它们的格式总是如你所说所有的字符串都以相同的方式引用,那么简单的分割也应该这样做:

"['first', 'sec', 'third']".split("'")[1::2]

此解决方案更加脆弱,因为它只支持单一的引用样式。

但速度要快得多。

%timeit "['first', 'sec', 'third']".split("'")[1::2]
1000000 loops, best of 3: 726 ns per loop

%timeit ast.literal_eval("['first', 'sec', 'third']")
10000 loops, best of 3: 21.8 us per loop