正则表达式删除\ u标点符号,但保留单(双)大写字符点

2024-06-01 02:45:50 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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-9\s\n]+', '', text)

Tags: and字符串text字符statesamuel标点符号大写
1条回答
网友
1楼 · 发布于 2024-06-01 02:45:50

你可以用

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

regex demo

详细信息

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

相关问题 更多 >