文本字符串中提取数据进行分析
程序员文章站
2022-07-01 20:53:46
...
需求
在进行数据分析的时候,有时候会碰到需要从文本字符串中提取需要的数据来进行分析的情况,这种需求在网络爬虫数据分析非常常见。
比如,需要下列表格“基础薪资规则”字段中提取阶梯单量和价格。而且表格中,大部分规则是4档单量和价格,也有部分是3档规则和价格。
格式为:
第1档单量 | 第2档单量 | 第3档单量 | 第4档单量 | 第1档价格 | 第2档价格 | 第3档价格 | 第4档价格 |
200 | 250 | 300 | 9999 | 3.8 | 4.8 | 5.0 | 5.2 |
200 | 250 | 300 | 9999 | 3.8 | 4.8 | 5.0 | 5.2 |
方法
使用Python中档re模块, 能够从一串有规律文本字符串中提取所需要档数据,配合正则表达式,功能非常强大。
# 提取特征数字,由于存在多个数字,findall()会返回一个列表
# 数据的pattern特征,注意到[0,200)单中需要提取数字200,前面是一个逗号,后面是一个括号+单,提取的内容放在()里,200后的括号,要识别“)”需要用到转义符号\
def find_orderNum(x):
patt = ',(.*?)\)单'
pattern = re.compile(patt)
return pattern.findall(x)
df['档位单量'] = df['基础薪资规则'].apply(find_orderNum)
# 现有档位数
def find_step_num(x):
return len(x)
df['现档位数'] = df['档位价格'].apply(find_step_num)
# 拆分阶梯单量
def find_orderNum1(x):
return eval(x[0])
def find_orderNum2(x):
return eval(x[1])
def find_orderNum3(x):
return eval(x[2])
def find_orderNum4(x):
if len(x)>3:
return eval(x[3])
else:
return eval(x[2])
df['现一档单量'] = df['档位单量'].apply(find_orderNum1)
df['现二档单量'] = df['档位单量'].apply(find_orderNum2)
df['现三档单量'] = df['档位单量'].apply(find_orderNum3)
df['现四档单量'] = df['档位单量'].apply(find_orderNum4)
结果如下:
上一篇: sklearn文本特征提取与“达观杯”文本智能处理挑战赛
下一篇: 基于Vue的简易MVVM
推荐阅读
-
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
-
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
-
文本字符串中提取数据进行分析
-
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
-
oracle数据库中将clob字段内容利用java提取出至文本文档中
-
PHPexcel导入excel数据时对行列中的数据进行字符串格式化
-
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数),strnatcmpstrcmp_PHP教程
-
数据提取(二):xpath - lxml从字符串和文件中解析html代码 etree.html(),etree.tostring(),etree.parse(),etree.HTMLParser()
-
.NET中JSON数据进行序列化和反序列化操作分析
-
【AMAD】newspaper -- 爬取/提取新闻网页中的文本,元数据