Python 如何替换一个单词,但前提是它不与另一个单词组合?

Python 如何替换一个单词,但前提是它不与另一个单词组合?,python,replace,Python,Replace,我有一个(编造的)句子是这样的 孩子们必须做家庭作业,在此期间不得使用手机。他们必须不发牢骚地做家务 我想换一个 必须→ **必须** 不得→ **不得** 通用的.replace(“必须”,“必须**”)(对于不得,也一样)将不起作用。为了解释这些组合词,我目前丑陋的解决方案是 将**替换为zkjhufyslkdjfsdyotfjsgkj 将替换为zkjhufyslkdjfsdyotfjsgkj (此时必须处理旧的**不能**和新的必须) 对于普通必须执行相同的操作(使用不同的替换)

我有一个(编造的)句子是这样的

孩子们必须做家庭作业,在此期间不得使用手机。他们必须不发牢骚地做家务

我想换一个

  • 必须
    → <代码>**必须**
  • 不得
    → <代码>**不得**
通用的
.replace(“必须”,“必须**”)
(对于
不得
,也一样)将不起作用。为了解释这些组合词,我目前丑陋的解决方案是

  • **替换为
    zkjhufyslkdjfsdyotfjsgkj
  • 替换为
    zkjhufyslkdjfsdyotfjsgkj
(此时必须处理旧的
**不能**
和新的
必须

  • 对于普通
    必须执行相同的操作(使用不同的替换)
  • **替换
    zkjhziufyslkdjfsdyotfjsgkj
    **不得**
  • **必须**
这会管用,但很难看。(我不考虑只有一个或多个!=2个
*
实例的一些边缘情况)


除了[something aword],“用[something aword]替换[something]还有更优雅的说法吗?

您可以使用一个带有可选组的模式,并替换为双
**
之间的完全匹配,如
**

  • \b必须
    一个单词边界以防止部分匹配,而匹配
    必须
  • (?:NOT)?
    可以选择匹配空格和
    NOT
  • \b
    单词边界


或在左侧和右侧声明空白边界:

(?<!\S)MUST(?: NOT)?(?!\S)
(?

您可以使用带有可选组的模式,并替换为双
**
之间的完全匹配,如
**\g**

  • \b必须
    一个单词边界以防止部分匹配,而匹配
    必须
  • (?:NOT)?
    可以选择匹配空格和
    NOT
  • \b
    单词边界


或在左侧和右侧声明空白边界:

(?<!\S)MUST(?: NOT)?(?!\S)
(?

先用字符串前面的空格替换
'MUST NOT'
,然后再替换
'MUST'
,怎么样

sentence.replace('MUST NOT', '**MUST NOT**').replace(' MUST', ' **MUST**')
# Children **MUST** do their homework and **MUST NOT** use their phones during that time. They **MUST** do their chores without whining.

先用字符串前面的空格替换
“不得”
,然后再替换
“必须”
,怎么样

sentence.replace('MUST NOT', '**MUST NOT**').replace(' MUST', ' **MUST**')
# Children **MUST** do their homework and **MUST NOT** use their phones during that time. They **MUST** do their chores without whining.
您可以使用负片检查
**
是否已存在:

重新导入
s='不得-**不得**-必须-**必须**'
re.sub(r’(?您可以使用负片检查
**
是否已经存在:

重新导入
s='不得-**不得**-必须-**必须**'

re.sub(r'(?你的问题到底是什么?这类任务有很多解决方案,但我不理解这个问题。你有麻烦吗?因为
必须
不得
的子字符串,这可能导致类似
**必须**不
?安德烈亚斯:是的,你的问题是什么这类任务有很多解决方案,但我不明白问题所在。你有麻烦吗,因为
必须
必须不
的子字符串,这可能导致类似
**必须**不
?@Andreas:是的,而且是
*****必须**不**
哦,这是一个好的,谢谢。我想添加一行代码来获得ri在应用您的前一个
***
之前,请先删除上一个
***
的d。哦,这是一个好的,谢谢。在应用您的前一个
***
之前,我会添加一个一行程序来删除上一个
***
sentence.replace('MUST NOT', '**MUST NOT**').replace(' MUST', ' **MUST**')
# Children **MUST** do their homework and **MUST NOT** use their phones during that time. They **MUST** do their chores without whining.