0

我有一个这种特定格式的列表。

[u' ', u'Address :',u'Sadar Bazaar',u'new Delhi,India',u' ',u'Name :',u'Saun-Jean',u' ',u'Occupation :',u'Developer',u'Hacker',u' ']

我想将记录插入数据库。

这是我的想法,怎么做。

1)取两个之间的所有项目u' '

2)第二项u'Address'定义了数据库的字段,其余项u' '定义了数据。像

 'Address :','Sadar Bazaar','new Delhi,India'

3) 对所有项目重复此过程。

可能还有其他好主意。

但我不知道如何在 Python 中做到这一点。有人可以帮我做吗?

编辑:这是我构建列表的方式:

for tr in browser.find_elements_by_xpath("//tbody//tbody//tr"):
 tds=tr.find_elements_by_tag_name('td')
 if tds:
  data.append([td.text for td in tds])
4

4 回答 4

1

这作为字典要好得多:

d={}
d['Address'] = ['sadar bazaar', ...]
d['Name'] = [ 'saun-jean', ... ]
...

或者也许作为字典列表(或类实例):

[ {'Address' : 'sadar bazaar', 'Name': 'saun-jean'}, { ... } ]

要将您的列表转换为我上面的字典列表,您可以执行以下操作:

from collections import defaultdict
d = defaultdict(list)
a = iter(yourlist)
key = None
for elem in a:
   if elem == u' ':
      key = next(a)
   else:
      d[key].append(elem)
于 2012-08-21T17:45:45.170 回答
1
lis=[u' ', u'Address :',u'Sadar Bazaar',u'new Delhi,India',u' ',u'Name :',u'Saun-Jean',u' ',u'Occupation :',u'Developer',u'Hacker',u' ']
strs=' '.join(str(x).strip() for x in lis if str(x).strip())
lis1=strs.split(':')
dic={}
for i,x in enumerate(lis1[:-1]):
    if x.strip():
        temp_lis=x.strip().split()
        if i+1 <len(lis1)-1:
            dic[temp_lis[-1]]=' '.join(lis1[i+1].split()[:-1])
        else:
            dic[temp_lis[-1]]=' '.join(lis1[i+1].split())

print dic 

输出:

{'Occupation': 'Developer Hacker', 'Name': 'Saun-Jean', 'Address': 'Sadar Bazaar new Delhi,India'}
于 2012-08-21T18:06:55.250 回答
0

您必须首先构建字典,这可以通过执行以下操作来完成(粗略代码):

data = {'Adress' : '',
        'Name' : '',
        'Occupation' : ''}
for item in tds:
    data['Adress'] = item[0]
    data['Name'] = item[1]
    data['Occupation'] = item[2]

当然,这是在 tds 中的 trs 总是在同一个地方的情况下。然后您可以使用“数据”字典按名称提取数据

于 2012-08-21T18:04:34.923 回答
0

按原样使用您的数据:

l = [u' ', u'Address :',u'Sadar Bazaar',u'new Delhi,India',u' ',u'Name :',u'Saun-Jean',u' ',u'Occupation :',u'Developer',u'Hacker',u' ']

entries = {}
key = ''
for i in range(len(l)):
    if l[i] == u' ' and i + 1 < len(l):
        key = l[i + 1].replace(':', '').strip()
        entries[key] = []
    elif entries.has_key(l[i].replace(':', '').strip()):
        continue
    else:
        # remove trailing space
        if l[i] != u' ':
            entries[key].append(l[i])

print entries

输出为字典:

{u'Occupation': [u'Developer', u'Hacker'], u'Name': [u'Saun-Jean'], u'Address': [u'Sadar Bazaar', u'new Delhi,India']}
于 2012-08-21T18:12:25.270 回答