为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 数据框中通过 RegEx 删除不同的文本短语

在 Python 数据框中通过 RegEx 删除不同的文本短语

慕工程0101907 2021-09-28 20:39:40
基本上,我想删除嵌入在我的文本数据中的某些短语模式:以大写字母开头,以 Em Dash "—" 结尾以 Em Dash "—" 开头并以 "Read Next" 结尾说,我有以下数据:宿务市——被杀的人权律师的遗孀......引用了 NUPL 的数据,该数据显示过去两年有 34 名律师被杀。— JULIE M. AURELIO 和 DJ YAP 的报告阅读下一个和菲律宾马尼拉——总统……但正义最终会突破他们的有罪不罚之墙,……——来自 MELVIN GASCON、JULIE M. AURELIO、DELFIN T. MALLARI JR.、JEROME ANING、JOVIC YEE、GABRIEL 的报道PABICO LALU、PATHRICIA ANN V. ROXAS、DJ YAP、法新社、APRead Next我想删除以下短语:“宿雾城——”“—来自朱莉 M.奥雷利奥和 DJ YAP 的报告阅读下一个”“菲律宾马尼拉-”“——来自 MELVIN GASCON、JULIE M. AURELIO、DELFIN T. MALLARI JR.、JEROME ANING、JOVIC YEE、GABRIEL PABICO LALU、PATHRICIA ANN V. ROXAS、DJ YAP、法新社、APRead Next 的报道”我假设上面列举的每个模式都需要两个正则表达式。regex:—[A-Z].*Read Next\s*$可能适用于模式#2,但仅当文本数据中没有其他破折号时才有效。当模式 #1 出现时它不会工作,因为它会从它看到的第一个 em 破折号中删除块,直到“ Read Next ”字符串。我已经为模式 #1 尝试了以下正则表达式:^[A-Z]([A-Za-z]).+(—)$但是怎么就不行了。该正则表达式应该查找以任何大写字母开头的短语,然后是任何长度的字符串,只要它以“—”结尾。
查看完整描述

2 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

您正在考虑的连字符-实际上并不是连字符,而是称为Em Dash,因此您需要使用此正则表达式,它在开始时使用 em 破折号而不是连字符,

^—[A-Z].*Read Next\s*$

这是这个正则表达式的解释,

  • ^ --> 开始输入

  • --> 匹配Em DashUnicode 十进制代码为 8212的文字

  • [A-Z] --> 匹配一个大写字母

  • .* --> 匹配任意字符零次或多次

  • Read Next --> 匹配这些文字

  • \s* --> 这是为了匹配任何可能出现在行尾的可选空白

  • $ --> 输入结束


查看完整回答
反对 回复 2021-09-28
?
ITMISS

TA贡献1871条经验 获得超8个赞

应该处理这个的正则表达式 -

^—[A-Z]+(.)*(Read Next)$

你可以尝试在你的数据上实现这个正则表达式,看看它是否有效。


查看完整回答
反对 回复 2021-09-28
  • 2 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号