用逗号分隔列表

时间:2016-02-29 05:52:57

标签: python list

目前我有一个长列表,其中包含以下元素: ['01 / 01/2013 06:31,长字符串,未知']。

我如何将每个元素拆分为: ['01 / 01/2013 06:31],[长字符串],[未知]?我甚至可以这样做吗?

我尝试过variable.split(“,”),但我得到“AttributeError:'list'对象没有属性'split'”。

这是我的代码:

def sentiment_analysis():
    f = open('C:\path', 'r')
    write_to_list = f.readlines()
    write_to_list = map(lambda write_to_list: write_to_list.strip(), write_to_list)
    [e.split(',') for e in write_to_list]
    print write_to_list[0:2]
    f.close()
    return

我还没有得到它,我很感激任何帮助!

2 个答案:

答案 0 :(得分:2)

解决方案

你得到了这个:

['01/01/2013 06:31, long string of characters,Unknown']

好的。如果您知道此列表中只有一个长字符串,则只提取唯一的元素:

>>> x = ['01/01/2013 06:31, long string of characters,Unknown']
>>>
>>> y = x[0].split(",")  # extract only element and split by comma
>>> print(y)  # list of strings, with one depth
['01/01/2013 06:31', ' long string of characters', 'Unknown']

现在无论出于何种原因,你实际上都希望外部列表的每个元素都是一个包含一个字符串的列表。这很容易做到 - 只需使用map和匿名函数:

...  # continuation from snippet above
...
>>> z = map(lambda s: [s], y)  # encapsulates each elem of y in a list
>>> print(z)
[['01/01/2013 06:31'], [' long string of characters'], ['Unknown']]

你有它。

单线结论

没有列表推导,没有for循环,没有生成器。只是非常简单的函数式编程和匿名函数。

给出原始列表l

res = map(lambda s: [s],
          l[0].split(","))

答案 1 :(得分:1)

列表理解!

>>> variable = ['01/01/2013 06:31, long string of characters,Unknown']
>>> [x.split(',') for x in variable]
[['01/01/2013 06:31', ' long string of characters', 'Unknown']]

但等等,这比你想要的嵌套得多......

>>> itertools.chain.from_iterable(x.split(',') for x in variable)
<itertools.chain object at 0x109180fd0>
>>> list(itertools.chain.from_iterable(x.split(',') for x in variable))
['01/01/2013 06:31', ' long string of characters', 'Unknown']