Skip to content

正则抽取与解析 说明文档

冬日新雨 edited this page Apr 22, 2020 · 34 revisions

抽取 E-mail

抽取文本中的 E-mail 信息,并返回其在文本中的位置offset,以及所属域名domain_name

>>> import jionlp as jio
>>> text = '请发简历至[email protected]。' 
>>> emails = jio.extract_email(text, detail=True))

#  [{'text': '[email protected]', 
#    'offset': [6, 18], 
#    'domain_name': '163'}, 
#   {'text': '[email protected]', 
#    'offset': [23, 36], 
#    'domain_name': 'qq'}]
  • 暂不支持带中文字符的邮箱名称。

抽取电话号码

抽取文本中的电话号码信息,并返回其在文本中的位置offset,以及电话号码类别type,包括手机(cell_phone)和座机(landline_phone)。

>>> import jionlp as jio
>>> text = '有疑问请联系张小姐18340234920,或拨打(028)58291283。。' 
>>> phones = jio.extract_phone_number(text, detail=True))

# [{'text': '18340234920', 
#    'offset': [9, 18], 
#    'type': 'cell_phone'}, 
#   {'text': '(028)58291283', 
#    'offset': [24, 35], 
#    'type': 'landline_phone'}]
  • 暂不支持解析手机号码归属地 和 座机区号归属地

抽取 QQ

extract_qq

抽取文本中的 QQ 号,由于qq号特征不突出,故分为严格和非严格两种,默认 strict 为 True。

# 例 1
>>> import jionlp as jio
>>> text = '你加一下我的QQ: 123410942' 
>>> res = jio.extract_phone_number(text, detail=True))
>>> print(res)

# [{'text': '123410942', 'offset': [11, 18]}]

# 例 2

>>> text = '收纳金额为123410942元,进而导致...'
>>> res = jionlp.extract_qq(text, detail=True)
>>> print(res)

# []
  • 宽松规则指符合 QQ 号特征的号码全部抽取
  • 严格规则指在满足 QQ 号本身特征基础上,文本须包含 qq、QQ、加Q 等字样

抽取身份证号

extract_id_card

抽取文本中的身份证号,与 jionlp.parse_id_card 函数配合使用解析身份证号中的地址、出生年月、性别、校验码等信息

>>> text = '此人身份证号是 21040319560330098x,曾经...'
>>> res = jionlp.extract_id_card(text, detail=True)
>>> print(res)

# [{'text': '21040319560330098x', 'offset': [9, 25]}]

>>> res = jionlp.parse_id_card(res[0]['text'])


抽取 URL 超链接

extract_url

抽取文本中的超链接,包括 http、https、ftp 等类型。

>>> text = '让我这个手机知乎党来终结这个问题吧!http://link.ipaiban.com/#手机文字链接生成器!'
>>> res = jionlp.extract_id_card(text, detail=False)
>>> print(res)

# ['http://link.ipaiban.com/']

抽取 IP 地址

extract_ip_address

抽取文本中的 ip 地址,仅限于 ipv4。

>>> text = '链接ip地址你知道吗?是0.0.0.0!'
>>> res = jionlp.extract_ip_address(text, detail=False)
>>> print(res)

# ['0.0.0.0']
  • 支持判断 ip 地址值介于 0~255 之间,超过则不会返回结果

抽取文本括号信息

extract_parentheses

抽取文本中的括号中的内容,括号类型主要包括 {}「」[]【】()()<>《》

>>> text = '【重磅新闻】特朗普选举失利'
>>> res = jionlp.extract_parentheses(text)
>>> print(res)

# ['【重磅新闻】']
  • 若括号仅只有半个,则不做处理

删除文本中的 E-mail

remove_email

删除文本中的 E-mail 信息,一般用于将其当做无关噪声,处理分析数据。

>>> text = '张晨星[email protected],现在电子邮件可以带中文了吗?'
>>> res = jionlp.remove_email(text)
>>> print(res)

# '张晨星,现在电子邮件可以带中文了吗?'
  • 从该例中可知,不支持电子邮件的中文格式。

删除文本中的 URL

remove_url

删除文本中的 url 信息,一般用于将其当做无关噪声,处理分析数据。

>>> text = '让我这个手机知乎党来终结这个问题吧!http://link.ipaiban.com/#手机文字链接生成器!'
>>> res = jionlp.remove_url(text)
>>> print(res)

# '让我这个手机知乎党来终结这个问题吧!#手机文字链接生成器!'
  • 若整个字符串全部为 URL,则仅返回空字符串