Python 单位(亿、万)转数字

需求背景

今天在爬取长沙链接二手房数据的时候,需要将房屋总价和单价转换为数字进行存储

python 功能代码:

实现str 转int,要求:包含'亿' =1e8, 包含'万' = 1e4  。功能代码如下:

def str2value(valueStr):
    valueStr = str(valueStr)
    idxOfYi = valueStr.find('亿')
    idxOfWan = valueStr.find('万')
    if idxOfYi != -1 and idxOfWan != -1:
        return int(float(valueStr[:idxOfYi])*1e8 + float(valueStr[idxOfYi+1:idxOfWan])*1e4)
    elif idxOfYi != -1 and idxOfWan == -1:
        return int(float(valueStr[:idxOfYi])*1e8)
    elif idxOfYi == -1 and idxOfWan != -1:
        return int(float(valueStr[idxOfYi+1:idxOfWan])*1e4)
    elif idxOfYi == -1 and idxOfWan == -1:
        return float(valueStr)

实例:

# 创建文件
f = open('长沙二手房数据清洗.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['标题', '小区', '地名', '房子基本信息',
                                           '房价', '单价', '发布信息'])
# 写入表头
csv_writer.writeheader()

with open('长沙二手房数据.csv', 'rt', newline='', encoding='utf-8', errors='ignore') as f:
    csv_read = csv.reader(f)
    for line in csv_read:
        if len(line):
            txt = line[0]
            if txt != '标题' and txt != '':
                print('总价', line[4])
                unitPrice = 0
                Price = 0
                if line[4].find('万') > 0:
                    Price = str2value(line[4])
                    print('是否包含万', str2value(line[4]))
                if line[5].find('元/平') > 0:
                    unitPrice = int(str(line[5].replace('元/平', '').replace(',', '')))
                    print('是否包含元/平', int(str(line[5].replace('元/平', '').replace(',', ''))))
                print('单价', line[5])
                print(line)
                dit = {
                    '标题': line[0],
                    '小区': line[1],
                    '地名': line[2],
                    '房子基本信息': line[3],
                    '房价': Price,
                    '单价': unitPrice,
                    '发布信息': line[6],
                }
                csv_writer.writerow(dit)

效果截图:

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值