正则表达式remove_punctuation,但保留 AT 单(双)大写 - 字符点



我需要删除标点符号,但保留在单个大写字符中一个点(如果它是人类名称的一部分:(:例如:在此字符串中:

Michigan State President Samuel L. Stanley Jr. and Interim Provost Teresa Sullivan hosted a webinar Friday night, answering questions from returning MSU students.

我需要在L. Jr.保持点

这将删除所有标点符号:

text = re.sub('[^A-Za-z0-9sn]+', '', text)

您可以使用

text = re.sub(r'b([A-Z][a-z]?.)|_|[^sw]+', r'1', text)

查看正则表达式演示

  • b([A-Z][a-z]?.)- 单词边界,然后是组 1:大写字母后跟小写字母,然后是一个点(替换模式中的1在结果中恢复此文本,以便不会从字符串中删除此匹配部分(
  • |- 或
  • _- 下划线
  • |- 或
  • [^sw]+- 除字母、数字、_和空格以外的 1 个或多个字符。

最新更新