Python 正则表达式,如果某些单词包含空格



>问题示例:

str1 = "ur a sh * tty comment ."

我需要句子中的每个单词,并希望用sh***tty替换sh * tty(将单词中的空格替换为*(

如果我尝试:

for word in s.split():
print(word)

我得到:

ur
a
sh
*
tty
comment
.

sh * tty现在分为 3 个单词

  1. sh
  2. *
  3. tty

但是我sh * tty需要这个词,这样我就可以用*替换空格并最终sh***tty

我不能简单地用*替换空格.我只需要用*替换一个空格,如果该空格在任何英语单词中(典型错误(。

我也试过:

s = "ur a sh * tty comment ."
makeBad = s.translate ({ord(c): "*" for c in " "})

但我不想替换分隔两个单词的空格。

您可以使用

import re
str1 = "ur a sh * tty comment ."
nw = r"[]*!@#$%^&()[{};:,./<>?\|`~=_+-]"
print( re.sub(rf'(S) {nw} (S)', r'1***2' , str1) )

请参阅 Python 演示。

在这里,模式将如下所示

(S) []*!@#$%^&()[{};:,./<>?\|`~=_+-] (S)

它匹配

  • (S)- 组 1 (1(:任何非空格字符
  • - 一个空间
  • []*!@#$%^&()[{};:,./<>?\|`~=_+-]- 字符形式为集合:]*!@#$%^&()[{};:,./<>?|`~=_+-
  • - 一个空间
  • (S)- 组 2 (2(:任何非空格字符。

最新更新