如何在Python中提取字符串中的列表?

时间:2017-01-30 21:41:23

标签: python

我使用Pandas导入了CSV,并使用字符串条目读入了一列。检查本系列(列)的条目,我发现它们实际上应该是列表。例如:

df['A'] = pd.Series(['["entry11"]', '["entry21","entry22"]', '["entry31","entry32"]'])

我想从字符串中提取列表元素。到目前为止,我已尝试过以下链:

df['A'] = df['A'].replace("'",'',regex=True).
                  replace('\[','',regex=True).
                  replace('\]','',regex=True).
                  str.split(",")

(当然,所有这一切都在一行)。

这让我在一列中找回了我想要的列表元素。

  • [ ' “entry11”']
  • ['“entry21”,“entry22”']
  • ['“entry31”,“entry32”']

我的问题:有更有效的方法吗?对于应该更容易的事情来说,这似乎很紧张。

1 个答案:

答案 0 :(得分:5)

您可"apply" ast.literal_eval()系列剧:

In [8]: from ast import literal_eval

In [9]: df['A'] = df['A'].apply(literal_eval)

In [10]: df
Out[10]: 
                    A
0           [entry11]
1  [entry21, entry22]
2  [entry31, entry32]

还有map()applymap() - 这是讨论差异的主题: