插入带有逗号的整数数据
Inserting integer data that has commas
我正在尝试插入一大组(430 个条目)字典条目,其中一个键值对具有与其关联的薪水,格式为 $xx,xxx,xxx。我该如何解决这个问题,因为现在它将采用一个值并将其分成 3 列。
编辑:
def process_item(self, item, spider):
if isinstance(item, TeamStats):
for key, value in item.iteritems():
if key == "division":
print(item.get('division', ""))
self.cur.execute("INSERT INTO Divs( division ) VALUES(?)", (item.get('division', ""),))
self.con.commit()
if isinstance(item, Player):
self.cur.execute("INSERT INTO Players(\
player_name, \
salary, \
weight, \
age, \
height, \
position, \
college \
) \
VALUES( ?, ?, ?, ?, ?, ?, ?)", \
( \
item.get('name', ''),
item.get('salary', 0),
item.get('weight', 0),
item.get('age', 0),
item.get('height', ''),
item.get('position', ''),
item.get('college', '')
))
self.con.commit()
return item
我插入到管道中的对象如下所示:
600,000 美元
2015-01-08 14:17:59-0500 [nbaStats] 调试:从 <200 http://espn.go.com/nba/team/roster//name/mil/milwaukee-bucks> 中删除
{'age': 你'21',
'college': u'路易斯安那州立大学',
'height': 你'6-9',
'name': 你"Johnny O'Bryant III",
'position': 你'PF',
'salary': u'$600,000',
'weight': 你'265'}
5,200,000 美元
2015-01-08 14:17:59-0500 [nbaStats] 调试:从 <200 http://espn.go.com/nba/team/roster//name/mil/milwaukee-bucks> 中删除
{'age': 你'30',
'college': u'\xa0',
'height': 你'6-11',
'name': u'Zaza Pachulia',
'position': 你'C',
'salary': u'$5,200,000',
'weight': 你'270'}
您可以更改 SQL 查询以在插入时从工资中删除逗号和美元符号。你可以通过改变
来做到这一点
VALUES( ?, ?, ?, ?, ?, ?, ?)", \
到
VALUES( ?, REPLACE(REPLACE(?,',',''),'$',''), ?, ?, ?, ?, ?)", \
这两个嵌套的 REPLACE
操作删除了 ,
和 $
字符。
或者您可以更改 python 代码以删除多余的字符:
item.get('name', ''),
re.sub(r'[,$]', "", item.get('salary', 0)),
item.get('weight', 0),
无论哪种方式,清理注释数据都是简单的字符串处理。这两种方法都从数字字符串中删除所有美元符号和逗号。
我正在尝试插入一大组(430 个条目)字典条目,其中一个键值对具有与其关联的薪水,格式为 $xx,xxx,xxx。我该如何解决这个问题,因为现在它将采用一个值并将其分成 3 列。
编辑:
def process_item(self, item, spider):
if isinstance(item, TeamStats):
for key, value in item.iteritems():
if key == "division":
print(item.get('division', ""))
self.cur.execute("INSERT INTO Divs( division ) VALUES(?)", (item.get('division', ""),))
self.con.commit()
if isinstance(item, Player):
self.cur.execute("INSERT INTO Players(\
player_name, \
salary, \
weight, \
age, \
height, \
position, \
college \
) \
VALUES( ?, ?, ?, ?, ?, ?, ?)", \
( \
item.get('name', ''),
item.get('salary', 0),
item.get('weight', 0),
item.get('age', 0),
item.get('height', ''),
item.get('position', ''),
item.get('college', '')
))
self.con.commit()
return item
我插入到管道中的对象如下所示:
600,000 美元 2015-01-08 14:17:59-0500 [nbaStats] 调试:从 <200 http://espn.go.com/nba/team/roster//name/mil/milwaukee-bucks> 中删除 {'age': 你'21', 'college': u'路易斯安那州立大学', 'height': 你'6-9', 'name': 你"Johnny O'Bryant III", 'position': 你'PF', 'salary': u'$600,000', 'weight': 你'265'} 5,200,000 美元 2015-01-08 14:17:59-0500 [nbaStats] 调试:从 <200 http://espn.go.com/nba/team/roster//name/mil/milwaukee-bucks> 中删除 {'age': 你'30', 'college': u'\xa0', 'height': 你'6-11', 'name': u'Zaza Pachulia', 'position': 你'C', 'salary': u'$5,200,000', 'weight': 你'270'}
您可以更改 SQL 查询以在插入时从工资中删除逗号和美元符号。你可以通过改变
来做到这一点VALUES( ?, ?, ?, ?, ?, ?, ?)", \
到
VALUES( ?, REPLACE(REPLACE(?,',',''),'$',''), ?, ?, ?, ?, ?)", \
这两个嵌套的 REPLACE
操作删除了 ,
和 $
字符。
或者您可以更改 python 代码以删除多余的字符:
item.get('name', ''),
re.sub(r'[,$]', "", item.get('salary', 0)),
item.get('weight', 0),
无论哪种方式,清理注释数据都是简单的字符串处理。这两种方法都从数字字符串中删除所有美元符号和逗号。