如何将字符串拆分为变量

时间:2019-09-14 05:35:30

标签: python

我有这种类型的字符串。

data = [{'value': 'Common Stock', 'footnoteid': ''},
        {'value': 'Bond', 'footnoteid': 'F2, F3'},
        {'value': 'Common Stock', 'footnoteid': ''},
        {'value': 'Option', 'footnoteid': 'F4'}]

我希望这是两组变量。

 obs | value        | footnoteid
-----+--------------+------------
 1   | Common Stock |
 2   | Bond         | F2, F3
 3   | Common Stock |
 4   | Option       | F4

我尝试的代码是这样。

value=data.get['value']
list_value=reverse.value

footnote=data.get['footnote']
list_footnote=reverse.footnote

我的代码看不到正确的结果。

3 个答案:

答案 0 :(得分:1)

使用dictionary comprehension

尝试一下
>>> data = [{'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Bond', 'footnoteid': 'F2, F3'}, {'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Option', 'footnoteid': 'F4'}]
>>> result = {index:val['value']+' '+val['footnoteid'] for index,val in enumerate(data)}

输出:

>>> print(result)
{
 0: 'Common Stock ', 
 1: 'Bond F2, F3', 
 2: 'Common Stock ', 
 3: 'Option F4'
 }

OP新修改后:

您可以使用熊猫,如下所示,以获得新的预期输出:

>>> import pandas as pd
>>> df = pd.DataFrame(data)

输出:

>>> print(df)
  footnoteid         value
0             Common Stock
1     F2, F3          Bond
2             Common Stock
3         F4        Option

答案 1 :(得分:0)

这是带有字典的列表,请使用

   # Formats correctly if I select numeric columns only, but of course I lose the other columns given use of select_if:

formattable(my_df %>%
              select_if(., is.numeric), list(~ sign_formatter))

或使用data = [{'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Bond', 'footnoteid': 'F2, F3'}, {'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Option', 'footnoteid': 'F4'}] print( data[0].get('value'), data[0].get('footnoteid') ) print( data[1].get('value'), data[1].get('footnoteid') ) 循环

for

要获取数字,您可以添加data = [{'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Bond', 'footnoteid': 'F2, F3'}, {'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Option', 'footnoteid': 'F4'}] for item in data: print(item.get('value'), item.get('footnoteid'))

enumerate()

顺便说一句:您也可以将其直接与for number, item in enumerate(data, 1): print(number, item.get('value'), item.get('footnoteid')) 一起使用来创建pandas,这很有用。

DataFrame

DataFrame

import pandas as pd

data = [{'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Bond', 'footnoteid': 'F2, F3'}, {'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Option', 'footnoteid': 'F4'}]

df = pd.DataFrame(data)

print(df)

答案 2 :(得分:0)

zip用于列表理解:

list_value, list_footnote = zip(*[[x['value'], x['footnoteid']] for x in data])

示例

data = [{'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Bond', 'footnoteid': 'F2, F3'}, {'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Option', 'footnoteid': 'F4'}]

list_value, list_footnote = zip(*[[x['value'], x['footnoteid']] for x in data])

print(list_value)     # ('Common Stock', 'Bond', 'Common Stock', 'Option') 
print(list_footnote)  # ('', 'F2, F3', '', 'F4')