解析一个字符串,直到一个空格,以便在python中形成一个列表

时间:2016-06-16 04:20:50

标签: python string parsing

我在string中有python格式:

上面的""表明它是一个字符串。现在我想解析这个string,直到我点击第一个''(上面例子中col3之后的空元素)和在此之前形成一个包含元素的列表。因此,基于上面的示例示例,我应该获得list ['col1', 'col2', 'col3']。我怎样才能在python

中执行此操作

3 个答案:

答案 0 :(得分:3)

将字符串转换为列表并使用列表操作将字符串切成空字符串:

>>> s = "['col1', 'col2', 'col3','', 'row1', 'row2']"
>>> import ast
>>> L = ast.literal_eval(s)
>>> L
['col1', 'col2', 'col3', '', 'row1', 'row2']
>>> L.index('')
3
>>> L[:L.index('')]
['col1', 'col2', 'col3']

答案 1 :(得分:0)

import re
import numpy as np
l  ="['col1', 'col2', 'col3','', 'row1', 'row2']"
pattern = r"'([A-Za-z0-9_\./\\-]*)'"
m = re.findall(pattern, l)
mn = np.array(m)
rslt = list(np.split(mn, np.where(mn==''))[0])

<强>输出:

rslt
Out[75]: ['col1', 'col2', 'col3']

<强>解释

In [78]: pattern = r"'([A-Za-z0-9_\./\\-]*)'"
    ...: m = re.findall(pattern, l)
    ...: 

In [79]: m
Out[79]: ['col1', 'col2', 'col3', '', 'row1', 'row2']

In [80]: mn = np.array(m)

In [81]: [list(x) for x in np.split(mn, np.where(mn==''))]
Out[81]: [['col1', 'col2', 'col3'], ['', 'row1', 'row2']]

答案 2 :(得分:0)

我希望我可以使用json直接解析您的字符串,但是当我这样做时,我会收到此错误:

>>> import json
>>> json.loads("['col1', 'col2', 'col3','', 'row1', 'row2']")

...
ValueError: No JSON object could be decoded

所以,我首先用双引号替换单引号:

>>> s = "['col1', 'col2', 'col3','', 'row1', 'row2']"
>>> m = json.loads(s.replace("'", '"'))
>>> m
[u'col1', u'col2', u'col3', u'', u'row1', u'row2']  

# find first index of empty string and the splice the list
>>> m[:m.index('')]
[u'col1', u'col2', u'col3']