在Python字典中组织数据
我正在使用selenium从网页中提取一些数据在Python字典中组织数据,python,dictionary,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 然而,这都是一个字符串和多行。 是否有一
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
然而,这都是一个字符串和多行。
是否有一种方法可以将每个字符分开,以便将其附加到词典中。我试图。将它附加到列表中,它返回[…]],[…]
,我试图。将它更新为字典,我得到一个错误,说值错误:字典更新序列元素35; 0的长度为3;2是必需的
更新:我想我的问题是混淆了我的格式 假设表体是字符串
>>> table_body.split("|")
编辑:这样应该可以了
>>> for row in table_body.split("|"):
... print row.split(',')
编辑2:如果没有“|”符号,只有换行符
>>> for row in table_body.split("\n"):
... print row.split(',')
假设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(',')
要从具有默认值的字符串中获取字典
,例如:
>>> 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}
要从具有默认值的字符串中获取字典
,例如:
>>> 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}
以var lst为例:
lst = 'Rank | Name | State | Position | cost | value | etc...'
如果您做出以下决定:
>>> table_body = lst.split("|")
然后打印表体:
>>>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...'}
以var lst为例:
lst = 'Rank | Name | State | Position | cost | value | etc...'
如果您做出以下决定:
>>> table_body = lst.split("|")
然后打印表体:
>>>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...'}
你能展示一个输出样本吗?@JkShaw这是输出样本。当我拉它时,它会给我每个TR和所有数据,然后生成一个新字符串,因此当我将它放在每个属性末尾的列表中时,它只会创建一个新行\n2、\n3、\n4等等。您能显示一个示例输出吗?@JkShaw有输出。当我拉它时,它会给我每个TR和所有数据,然后生成一个新字符串,所以当我把它放在每个属性末尾的列表中时,它只会创建一个新行\n2、\n3、\n4等等。解决方案很好,但你也应该去掉前导和尾随空格。@Sidon['Rank','Name','State','Position','cost','value','etc...]所有这些都是一个字符串,然后下一个具有所有相同属性的项目被移动到一个新行。因此所有项目都被分组在一个大字符串中。@David,这样你就可以在每行(一个字符串)中创建一个列表然后是这个列表的列表,最后是一个dict,跟在我上面的代码后面。这个解决方案很好,但是你也应该去掉前导和尾随空格。@Sidon['Rank','Name','State','Position','cost','value','etc..]所有这些都是一个字符串,然后下一个具有所有相同属性的项目被移动到一个新行。因此,所有项目都被分组在一个大字符串中。@David,这样您就可以在每行创建一个列表(一个字符串)然后是一个列表,最后是一个dict,按照我上面的代码。我尝试了这个,但不起作用,因为它都是一个大字符串根据你的评论编辑了我的答案。尝试一下,看看是否有效。我尝试了这个,但不起作用,因为它都是一个大字符串根据你的评论编辑了我的答案。尝试一下,看看是否有效.