我使用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
更新:我认为我的问题混淆了格式化的方式。
答案 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...'}