在Python词典中组织数据

时间:2017-05-01 17:25:19

标签: python dictionary

我使用selenium从网页上传输一些数据

table_body = browser.find_element_by_tag_name('tbody').text
print(table_body)

这让我回来了

'1 LA, California 3 bed room 845,600 \n1
2 OK, Oklahoma city 3 bed room 160,000 \n2
3 TX, Dallas 1 bed room 60,000' \n3

然而,它是一行多行的字符串。 有没有办法可以将每个角色分开,以便将其附加到字典中。我已尝试.append将其添加到列表中并返回[[...]],[[...]]我尝试.update它是一个字典,我收到错误提示ValueError: dictionary update sequence element #0 has length 3; 2 is required

更新:我认为我的问题混淆了格式化的方式。

3 个答案:

答案 0 :(得分:2)

假设table_body是一个字符串,

>>> table_body.split("|")

编辑:这应该适用。

>>> for row in table_body.split("|"):
...    print row.split(',')

编辑2:如果没有'|'符号和新线。

>>> for row in table_body.split("\n"):
...    print row.split(',')

答案 1 :(得分:1)

从具有默认值dictionary的字符串中获取None,例如:

>>> table_body = 'Rank | Name | State | Position | cost | value'

# List with stripped whitespaces
>>> [s.strip() for s in table_body.split('|')]
['Rank', 'Name', 'State', 'Position', 'cost', 'value']

# Dictionary from tab table_body
>>> dict([(s.strip(), None) for s in table_body.split('|')])
{'Name': None, 'value': None, 'State': None, 'cost': None, 'Rank': None, 'Position': None}

答案 2 :(得分:0)

考虑var lst:

lst = 'Rank | Name | State | Position | cost | value | etc...'

如果你做:

>>> table_body = lst.split("|")

然后打印table_body:

>>>print (table_body)
['Rank ', ' Name ', ' State ', ' Position ', ' cost ', ' value ', ' 
  etc...']

如果您尝试

>>> dict1 = dict(table_bodyt)

你会收到错误:

dictionary update sequence element #0 has length 1; 2 is required

为什么?

因为要将列表转换为dict,列表的每个元素都需要是一个包含两个元素的子列表,一个用于键,另一个用于值。例如:

>>> lst2 = [[n,table_body[n]] for n in range(len(table_body))]
>>> dict(lst2)
{0: 'Rank ',
 1: ' Name ',
 2: ' State ',
 3: ' Position ',
 4: ' cost ',
 5: ' value ',
 6: ' etc...'}