-
Notifications
You must be signed in to change notification settings - Fork 415
正则抽取与解析 说明文档
抽取文本中的 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'},
- 暂不支持带中文字符的邮箱名称。
抽取文本中的金额字符串,并提供将其转换为标准数字格式的函数。
>>> import jionlp as jio
>>> text = '张三赔偿李四人民币车费601,293.11元,工厂费一万二千三百四十五元,利息9佰日元,打印费十块钱。'
>>> moneys = jio.extract_money(text)
>>> standard_moneys = [jio.money_standardization(i) for i in moneys]
# moneys: ['601,293.11元', '一万二千三百四十五元', '9佰日元', '十块钱']
# standard_moneys: ['601293.11元', '12345.00元', '900.00日元', '10.00元']
- 支持标准数字格式,如:1,034,192.07元
- 支持纯数字格式,如:987273.3美元
- 支持大写中文金额,如:柒仟六佰零弎萬肆仟叁佰贰拾壹元伍分
- 支持混合格式,如:1.26万港元
- 支持多种常见货币类型:人民币,港元,澳门元,美元,日元,澳元,韩元,卢布,英镑,马克,法郎,欧元,加元等。
抽取文本中的电话号码信息,并返回其在文本中的位置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'}]
- 支持解析手机号码归属地 和 座机区号归属地解析,须配合
jio.phone_location
使用
抽取文本中的 QQ 号,由于qq号特征不突出,故分为严格和非严格两种,默认 strict 为 True。
# 例 1
>>> import jionlp as jio
>>> text = '你加一下我的QQ: 123410942'
>>> res = jio.extract_qq(text, detail=True))
>>> print(res)
# [{'text': '123410942', 'offset': [11, 18]}]
# 例 2
>>> text = '收纳金额为123410942元,进而导致...'
>>> res = jionlp.extract_qq(text, detail=True)
>>> print(res)
# []
- QQ 号特征不突出指的是 11位的 QQ 号会和 11位的电话号码,甚至其它数据格式等混淆
- 宽松规则指符合 QQ 号特征的号码全部抽取,可能造成一定的混淆
- 严格规则指在满足 QQ 号本身特征基础上,文本须包含 qq、QQ、加Q 等字样
抽取文本中的身份证号,与 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'])
抽取文本中的超链接,包括 http、https、ftp 等类型。
>>> text = '让我这个手机知乎党来终结这个问题吧!http://link.ipaiban.com/#手机文字链接生成器!'
>>> res = jionlp.extract_id_card(text, detail=False)
>>> print(res)
# ['http://link.ipaiban.com/']
抽取文本中的 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 之间,超过则不会返回结果
抽取文本中的括号中的内容,括号类型主要包括 {}「」[]【】()()<>《》
>>> text = '【重磅新闻】特朗普选举失利'
>>> res = jionlp.extract_parentheses(text)
>>> print(res)
# ['【重磅新闻】']
- 若括号仅只有半个,则不做处理
删除文本中的 E-mail 信息,一般用于将其当做无关噪声,处理分析数据。
>>> text = '张晨星[email protected],现在电子邮件可以带中文了吗?'
>>> res = jionlp.remove_email(text)
>>> print(res)
# '张晨星,现在电子邮件可以带中文了吗?'
- 从该例中可知,不支持电子邮件的中文格式。
删除文本中的括号中的内容,括号类型主要包括 {}「」[]【】()()<>《》
>>> text = '【重磅新闻】特朗普选举失利'
>>> res = jionlp.remove_parentheses(text)
>>> print(res)
# ['特朗普选举失利']
- 若括号仅只有半个,则不做处理
删除文本中的 url 信息,一般用于将其当做无关噪声,处理分析数据。
>>> text = '让我这个手机知乎党来终结这个问题吧!http://link.ipaiban.com/#手机文字链接生成器!'
>>> res = jionlp.remove_url(text)
>>> print(res)
# '让我这个手机知乎党来终结这个问题吧!#手机文字链接生成器!'
- 若整个字符串全部为 URL,则仅返回空字符串
删除文本中的 IP 信息,一般用于将其当做无关噪声,处理分析数据。
>>> text = 'https://10.28.104.169/pdf/2004.03705.pdf'
>>> res = jionlp.remove_ip_address(text)
>>> print(res)
# 'https:///pdf/2004.03705.pdf'
- 一般首先删除 URL,然后删除 IP 地址。否则可能如上例造成 URL 格式错误。
删除文本中的身份证信息,一般用于将其当做无关噪声,处理分析数据。
>>> text = '此人身份证号是 21040319560330098x,曾经...'
>>> res = jionlp.remove_id_card(text)
>>> print(res)
# '此人身份证号是 ,曾经...'
删除文本中的 QQ 号信息,一般用于将其当做无关噪声,处理分析数据。
>>> text = '你加一下我的QQ: 123410942'
>>> res = jionlp.remove_qq(text)
>>> print(res)
# '你加一下我的QQ: '
- 该方法中提供了严格匹配 qq 字符的规则,采用
strict
(bool) 参数实现
删除文本中的 html 信息,一般用于将其当做无关噪声,处理分析数据。
>>> text = '''<!-- '"` -->中国<!-- </textarea>美国经济风险</xmp> -->go to the airport<form class="logout-form" action="/logout" accept-charset="UTF-8" method="post">'''
>>> res = jionlp.remove_html_tag(text)
>>> print(res)
# '中国<!-- 美国经济风险 -->go to the airport'
- 该方法中无法删除包含有中文字符的 html 标签,出于此类标签依然包含有效信息的考虑。
删除文本中的电话号码信息
>>> import jionlp as jio
>>> text = '有疑问请联系张小姐18340234920,或拨打(028)58291283。。'
>>> phones = jio.remove_phone_number(text, detail=True))
# '有疑问请联系张小姐,或拨打。。'
删除文本中的异常字符,一般用于剔除无关噪声,处理分析数据。
>>> text = '''中国人民坚强伟大√~~'''
>>> res = jionlp.remove_exception_char(text)
>>> print(res)
# '中国人民坚强伟大~~'
- 该方法默认保留常用的标点、英文字母、多种形式编码的数字(如全角12,①等)、常用数学物理单位,汉字集。
- 该方法默认删除不常见的符号(如︻Ù等)、日文、俄文、希腊字母、不常见的数学物理单位与运算符。不常见的中文字符。unicode 编码的扩展集等。
- 正则表达式位于
JioNLP/jionlp/rule/JioNLP/jionlp/rule
中的EXCEPTION_PATTERN
,如有特殊需求可以自行修改。
清洗文本,步骤包括去除 html 标签、去除异常字符、去除冗余字符、去除括号补充内容、去除 URL、去除 E-mail、去除电话号码,将全角字母数字空格替换为半角,一般用于将其当做无关噪声,处理分析数据。
>>> text = '''<p><br></p> <p><span>在17日举行的十三届全国人大一次会议记者会上,环境保护部部长李干杰就“打好污染防治攻坚战”相关问题回答记者提问。李干杰表示
,打好污染防治攻坚战,未来将聚焦“围绕三类目标,突出三大领域,强化三个基础”开展具体工作。</span></p><p><span>顶层设计聚焦“三个三”</span></p><p><span>党的十八大以来>,我国生态环境保护工作乃至整个生态文明建设工作,决心之大、力度之大、成效之大前所未有,取得了历史性成就,发生了历史性变革。(责任编辑:唐小林)联系电话:13302130583,邮箱:[email protected]~~~~'''
>>> res = jionlp.clean_text(text)
>>> print(res)
>>> print(jionlp.clean_text.__doc__)
# ' 在17日举行的十三届全国人大一次会议记者会上,环境保护部部长李干杰就“打好污染防治攻坚战”相关问题回答记者提问。李干杰表示,打好污染防治攻坚战,未来将
聚焦“围绕三类目标,突出三大领域,强化三个基础”开展具体工作。顶层设计聚焦“三个三”党的十八大以来,我国生态环境保护工作乃至整个生态文明建设工作,决心之大、力度之大、>成效之大前所未有,取得了历史性成就,发生了历史性变革。联系电话:,邮箱:~'
- 去除异常字符主要指由于非 UTF-8 编码造成的异常字符,如“板簳浠?拷涔”等
- 去除冗余字符主要指文本中有多个连续的空格,“~~~~”等重复冗余信息,缩减为1个字符。
- 该方法中的所有关键字参数均为 bool 型,支持选择控制是否去除相应类型的数据
给定一条数字金额,返回其汉字大写结果。
>>> import jionlp as jio
>>> num = 120402810.03
>>> print(jio.money_num2char(num, sim_or_tra='tra'))
>>> num = '38,009.0'
>>> print(jio.money_num2char(num, sim_or_tra='sim'))
# 壹亿贰仟零肆拾萬贰仟捌佰壹拾點零叁
# 三万八千零九
-
sim_or_tra('sim'|'tra')
参数控制返回的汉字数字为“一”或“壹”。 - 最多支持12位整数位数字,即“千亿”