美好的一天,
我的屏幕刮刀(scrapy)收集了多个房产网站上的房产列表数据。它们都有几个常见的字段,如价格,楼面面积等。但是,与所有已删除的数据一样,字段的值现在非常不受欢迎。例如,在price
中,我有明显的值,例如$1,000,000,000
,但我也有$1,000,000,000 Price on Ask
和Price on Ask
之类的内容。所以目前,我将所有已删除的字段存储为数据库中的char。
我想将数据库中的这些字符串字段从字符转换为适当的类型,例如string到int,因此我可以相应地对它们进行索引。有人可以给我一些建议,开始转换数据是明智的程序和方法吗?
答案 0 :(得分:1)
你想扔掉“Price On Ask”字符串?或者是有价值的信息?
如果数据中有很多噪音,并且它没有任何兴趣,我会运行一个过滤器来删除所有非数字。
但是,如果时间允许,我更喜欢使用模式匹配显式处理数据(示例代码是PHP):
//$price is raw string
$price=str_replace(',','',$price); //Get rid of commas
$price=str_replace('$','',$price); //Get rid of dollar signs
if($price=='Price On Ask')$price=null;
elseif(preg_match('/^\d+$/',$price))$price=(int)$price; //Simple number
elseif(preg_match('/^(\d+) Price On Ask$/i',$price,$parts)){
$price=(int)$parts[1];
}
else{
echo "Unexpected price string: $price\n";
$price=null;
}
然后我有了为某些字符串设置标志的结构。此外,当数据中出现一个新字符串时,我的脚本会变得很嘈杂,我可以决定它是否重要。
(注意:将$ price设置为null意味着在数据库中放置NULL,而不是零。)