【无标题】

处理文本经常会遇到各种数值判别及关键字提取,今天paperclub就利用正则做一个demo分享。

  1. 判断字符串中是否有数值类字段:

效果如下:

今天星期三: => is_numerical: True, value: 三

电话119: => is_numerical: True, value: 119

one boy: => is_numerical: True, value: one

2023年,新冠终将称为过去式!: => is_numerical: True, value: 2023

hello, paperClub: => is_numerical: False, value:

今天的你, 是否比昨天快乐呢? : => is_numerical: False, value:

2. 面积及单位处理:

效果如下:

Sunshine---58平米, res = > 58平方米

六十九平米, res = > 六十九平方米

-98㎡, res = > 98平方米

-56㎡, res = > 56平方米

晴·89㎡, res = > 89平方米

148.5㎡, res = > 148.5平方米

800平方尺, res = > 800平方尺

800方尺, res = > 800方尺

10000+㎡, res = > 10000+平方米

2800㎡平面, res = > 2800平方米

120721方, res = > 120721平方米

8,200平方米, res = > 8200平方米

橙·109㎡, res = > 109平方米

125m2+, res = > 125平方米

1+1◥119m², res = > 119平方米

110,000平方, res = > 110000平方米

2800㎡平面, res = > 2800平方米

10000+㎡, res = > 10000+平方米

115m2, res = > 115平方米

980万平方公里, res = > 980万平方公里

def is_numerical(word:str):
""" 检查字符串中是否有数值型数据"""

reg = '([\d|一|二|三|四|五|六|七|八|九|十|壹|贰|叁|弎|仨|肆|伍|陆|柒|捌|玖|俩|两|零|百|千|万|亿|兆|拾|佰|仟|萬|億]+)'
reg += "|(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?Dec(ember)?)"
reg +="|(zero|one|two|three|four|five|six|seven|eight|nine)"

state = False
vlaue = ""
patten = re.compile(reg)
res = patten.search(word)
if res:
state = True
vlaue = res.group()

return state, vlaue

你可能感兴趣的:(paperClub专栏,实用好玩有趣的小项目,word,java,开发语言)