大仙帮小弟看看代码,如何将代码简化一下

shevchenko2010 2014-02-08 02:11:04
with open('data_pps.xml','r') as file:
data = file.read()
conn = sqlite3.connect('SQLite_pps.db')
c = conn.cursor()
c.execute('''select keyword from mydata where level = 2''')
cc = c.fetchall() #从数据库中获取字段
list_keywords = []
for oo in cc:
list_keywords.append(oo[0].encode("utf-8"))
#return list_keywords
#pp = oo[0].encode('utf-8')
#***********************************************************************************************************************
"""筛选掉二级标签,保留数据标签"""
for i in data.split('</goods>')[:-1]:
city_name = i.split('<city_name>')[-1].split('</city_name>')[0].decode('utf-8')
site_url = i.split('<site_url>')[-1].split('</site_url>')[0].decode('utf-8')
title = i.split('<title>')[-1].split('</title>')[0].decode('utf-8')
goods_url = i.split('<goods_url>')[-1].split('</goods_url>')[0].decode('utf-8')
desc = i.split('<desc>')[-1].split('</desc>')[0].decode('utf-8')
#class = i.split('<class>')[-1].split('</class>')[0].decode('utf-8')
img_url = i.split('<img_url>')[-1].split('</img_url>')[0].decode('utf-8')
original_price = i.split('<original_price>')[-1].split('</original_price>')[0].decode('utf-8')
sale_price = i.split('<sale_price>')[-1].split('</sale_price>')[0].decode('utf-8')
sale_rate = i.split('<sale_rate>')[-1].split('</sale_rate>')[0].decode('utf-8')
sales_num = i.split('<sales_num>')[-1].split('</sales_num>')[0].decode('utf-8')
start_time = i.split('<start_time>')[-1].split('</start_time>')[0].decode('utf-8')
site_name = i.split('<site_name>')[-1].split('</site_name>')[0].decode('utf-8')
close_time = i.split('<close_time>')[-1].split('</close_time>')[0].decode('utf-8')
merchant_name = i.split('<merchant_name>')[-1].split('</merchant_name>')[0].decode('utf-8')
merchant_tel = i.split('<merchant_tel>')[-1].split('</merchant_tel>')[0].decode('utf-8')
spend_start_time = i.split('<spend_start_time>')[-1].split('</spend_start_time>')[0].decode('utf-8')
spend_close_time = i.split('<spend_close_time>')[-1].split('</spend_close_time>')[0].decode('utf-8')
merchant_addr = i.split('<merchant_addr>')[-1].split('</merchant_addr>')[0].decode('utf-8')
hot_area = i.split('<hot_area>')[-1].split('</hot_area>')[0].decode('utf-8')
longitude = i.split('<longitude>')[-1].split('</longitude>')[0].decode('utf-8')
latitude = i.split('<latitude>')[-1].split('</latitude>')[0].decode('utf-8')
c.execute('''insert into api_data(city_name,site_url,title,goods_url,desc,img_url,original_price,sale_price,sale_rate,
sales_num,start_time,close_time,merchant_name,merchant_tel,spend_start_time,spend_close_time,
merchant_addr,hot_area,longitude,latitude,site_name)
values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)''',
(city_name,site_url,title,goods_url,desc,img_url,original_price,sale_price,sale_rate,
sales_num,start_time,close_time,merchant_name,merchant_tel,spend_start_time,spend_close_time,
merchant_addr,hot_area,longitude,latitude,site_name))
conn.commit()
print "Write data sucess!!"
...全文
215 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
panghuhu250 2014-02-09
  • 打赏
  • 举报
回复
用正则表达式找出所有的tag及对应的值。下面的saveRow返回要执行的sql语句。
In [43]: def saveRow(row):
    ...:     pat = re.compile(r"<([a-zA-Z_]*)>(.*)</\1>")
    ...:     tags, values = zip(*re.findall(pat, row))
    ...:     return "insert into api_data (%s) values (%s)" % (','.join(tags), ','.join(values))

In [44]: s = "<a>1</a>  <b>2</b> <c>abcde</c>"

In [45]: saveRow(s)
Out[45]: 'insert into api_data (a,b,c) values (1,2,abcde)'
angel_su 2014-02-08
  • 打赏
  • 举报
回复
标签名死写成字符串不妥,这些标签和api_data的字段一致,那就从数据库提出利用,代码自然会变得精简一些...
CDSoftwareWj 2014-02-08
  • 打赏
  • 举报
回复

def getValue(item, name)
    return item.split("<%s>" % name)[-1].split("</%s>" % name)[0].decode('utf-8')

...
city_name = getValue(i, "city_name")
更近一步可以按 name 自动返回变量列表 一个循环就全完成了 -_-||
CDSoftwareWj 2014-02-08
  • 打赏
  • 举报
回复
汗, 光这一句 i.split('<city_name>')[-1].split('</city_name>')[0].decode('utf-8') 你就可以提出来做个小函数啊

def getValue(item, name)
    return item.split("<%s>" % name)[-1].split("</%s>" %s name)[0].decode('utf-8')

...
city_name = getValue(i, "city_name")

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧