字段的抽取、拆分,和自定义函数替换

博客主要介绍了使用Python进行数据处理的操作。包括从CSV文件读取数据,将数字型字段转换为字符型,对电话号码字段进行抽取拆分,如提取运营商、地区和号码;还展示了对姓名进行拆分,以及自定义函数和使用lambda函数对数据进行转换的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#字段抽取
from pandas import read_csv
ab=read_csv('D://Python projects//reference data//4.6//data.csv')
#将数字型转换成字符型
ab['tel']=ab['tel'].astype(str)
#运营商
bands=ab['tel'].str.slice(0,3)
#地区
areas=ab['tel'].str.slice(3,7)
#号码
nums=ab['tel'].str.slice(7,11)
#赋值回去
ab['bands']=bands
ab['areas']=areas
ab['nums']=nums
ab['nums']=ab['nums'].astype[float]

 

 

 

 

#字段拆分
from pandas import read_csv
ac=read_csv('D://Python projects//reference data//4.7//data.csv')
ad=ac['name'].str.split(' ',1,True)
ae=ac['name'].str.split(' ',1)
ad.columns=['Brand','Name']

 

 

#自定义函数转换
def convert_currency(var):
    new_value=var.replace('2','0').replace('1','0')
    return float(new_value)
abb=ab['nums'].apply(convert_currency)
#一行函数带过
ab['nums'].apply(lambda x:x.replace('1','7').replace('2','8')).astype("float")

 

### Oracle 数据库中的字符串拆分方法 在 Oracle 数据库中,字符串拆分可以通过多种方式实现。以下是几种常见的解决方案: #### 使用正则表达式函数 `REGEXP_SUBSTR` 进行字符串拆分 Oracle 提供了强大的正则表达式支持功能,其中 `REGEXP_SUBSTR` 可用于按指定模式提取子字符串[^1]。通过循环调用该函数并调整匹配位置,可以逐步获取分割后的各个部分。 示例代码如下: ```sql WITH data AS ( SELECT 'a,b,c,d' AS valA FROM DUAL ), split_data AS ( SELECT LEVEL AS pos, REGEXP_SUBSTR(valA, '[^,]+', 1, LEVEL) AS token FROM data CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(valA, '[^,]', '')) + 1 ) SELECT * FROM split_data; ``` 上述脚本将输入字符串 `'a,b,c,d'` 转换为单独的记录集,每行为一个被逗号分隔的部分[^3]。 --- #### 利用 PL/SQL 编写自定义函数 当内置函数无法满足复杂需求时,编写自定义 PL/SQL 函数是一种灵活的选择。下面是一个简单的例子,展示如何创建一个接受单个字符串作为参数并将它按照特定分隔符拆分成表的形式返回的结果集合。 PL/SQL 自定义函数示例: ```plsql CREATE OR REPLACE FUNCTION SPLIT_STRING(p_str VARCHAR2, p_delimiter VARCHAR2 DEFAULT ',') RETURN SYS.ODCIVARCHAR2LIST PIPELINED IS v_token VARCHAR2(4000); BEGIN FOR i IN (SELECT TRIM(REGEXP_SUBSTR(p_str, '[^' || p_delimiter || ']+', 1, LEVEL)) AS value FROM DUAL CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(p_str, '[^' || p_delimiter || ']')) + 1) LOOP IF i.value IS NOT NULL THEN PIPE ROW(i.value); END IF; END LOOP; END; / ``` 此函数接收两个参数:待拆分的原始字符串以及分隔符,默认情况下以逗号 `,` 为界线进行切割操作。 调用方式: ```sql SELECT COLUMN_VALUE FROM TABLE(SPLIT_STRING('a,b,c,d')); ``` 这将会把传入的字符串分解成独立项形式输出。 --- #### 结合 `SUBSTR` `INSTR` 实现手动解析逻辑 对于某些简单场景下不涉及动态长度的情况,则可以直接利用基本字符串处理命令完成任务。例如,假设已知目标字段总是由固定数量的部分构成,并且各片段之间仅存在单一字符间隔的话,那么就可以借助组合运用 `SUBSTR()` `INSTR()` 来定位每一个组成部分的具体起始坐标与终止边界[^2]。 实例演示: ```sql -- 假设 source_string='city_company_staff' SELECT SUBSTR(source_string, 1, INSTR(source_string, '_', 1, 1)-1) part1, SUBSTR(source_string, INSTR(source_string, '_', 1, 1)+1, INSTR(source_string, '_', 1, 2) - INSTR(source_string, '_', 1, 1) -1 ) part2 , SUBSTR(source_string, INSTR(source_string,'_',-1)+1) last_part FROM (SELECT 'city_company_staff' AS source_string FROM DUAL ); ``` 这里展示了如何从复合名称结构里抽取前缀、中间名及最终单词的过程。 --- ### 总结 综上所述,在面对不同业务背景下的实际应用问题时,可以根据具体情况选用合适的工具技术手段解决字符串拆解难题。无论是依赖于标准 SQL 查询语句还是扩展性的存储过程开发,都能有效达成预期目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值