我需要删除标点符号,但保留在单个大写字符中一个点(如果它是人类名称的一部分:(:例如:在此字符串中:
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 个或多个字符。