python替换字符串中的逗号

在Hive处理文本数据时,遇到字段内包含以双引号包围的JSON字符串,其内部的逗号可能导致字段内容解析错误。本文介绍了两种方法替换这些字符串内的逗号:1) 使用正则表达式简单替换,可能不全面;2) 针对双引号内的逗号进行替换,确保全面处理。同时提供了验证替换结果的代码。
摘要由CSDN通过智能技术生成

hive处理文本数据时需要指定分隔符,一般来说都是用逗号来做分隔,当某个字段的内容是字符串时,特别是有"{}"双引号括起来的json那种,hive处理时会直接将某个字段中的字符串内容中逗号也当成分隔符来处理,造成hive表格字段内容的异常,这里就需要用将字符串中的逗号替换掉。代码如下:

# -*- coding: utf-8 -*-

import re,os,sys

def alter(file_path, new_str):

    #pat = re.compile(r"\"[a-zA-Z0-9_\-\+\s/\"\(\);]+,+[a-zA-Z0-9_\-\+\s,/\"\(\);]*\"")
    pat = re.compile(r"\"[a-zA-Z0-9_\-\+\s/\"\(\);\.]+,+[a-zA-Z0-9_\-\+\s,/\"\(\);\.]*\"")
    
    with open(file_path, 'r') as f, open("%s.bak" % file_path, "a") as f2:
        for line in f:
            res = pat.findall(line)
            if len(res) == 0:
                f2.write(line)
            for r in res:
                print r
                r = r.replace(',', new_str)
                print r
                f2.write(re.sub(pat,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值