【问题标题】:Replace command condition for replacing strings [duplicate]替换字符串的替换命令条件[重复]
【发布时间】:2017-04-01 13:35:30
【问题描述】:

想要替换字符串中的某些单词但不断得到以下结果:

字符串:"This is my sentence."

用户输入他们想要替换的内容:"is"

用户输入他们想要替换单词的内容:"was"

新字符串:"Thwas was my sentence."

我如何确保它只替换单词“is”而不是它找到的任何字符串?

代码功能:

import string
def replace(word, new_word):
   new_file = string.replace(word, new_word[1])
   return new_file

非常感谢任何帮助,谢谢!

【问题讨论】:

  • 很好的发现。我搜索了一个重复项,但使用的是“替换”一词,而不是“查找”。
  • 我也是:python replace words not partial words。我认为“不偏词”一词是这里的关键。
  • 至少现在涵盖了“替换”部分:)
  • @TadhgMcDonald-Jensen 诀窍是用谷歌搜索关键字,只是我每次都忘记了。 SO 引擎很好,因为您可以使用 sqbrackets 过滤标签,但 google 更适合一般搜索,并且 99% 的时间 SO 答案首先弹出!

标签: python string for-loop replace conditional-statements


【解决方案1】:

使用正则表达式词边界:

import re

print(re.sub(r"\bis\b","was","This is my sentence"))

比单纯的拆分更好,因为它也适用于标点符号:

print(re.sub(r"\bis\b","was","This is, of course, my sentence"))

给予:

This was, of course, my sentence

注意:不要跳过 r 前缀,否则您的正则表达式会损坏:\b 将被解释为退格。

【讨论】:

  • 非常感谢!这非常适合我的程序!
  • @Jarred McMahan 如果答案对您有用,请接受它,以便将其标记为“已回答”。
【解决方案2】:

不使用正则表达式的简单但不是那么全面的解决方案(由 Jean-Francios Fabre 给出)。

 ' '.join(x if x != word else new_word for x in string.split())

【讨论】:

  • 这不会保留原始空格,因为您实际上是用空格替换所有空格。另外请在您的回答中提供一些信息,仅一行代码并没有那么有帮助。
  • @Jean:不能再同意了。感谢您的提示和提示(y)
  • 如果您不想使用正则表达式,那还不错。还有pythonic。
猜你喜欢
  • 2023-04-11
  • 1970-01-01
  • 2021-10-08
  • 2014-03-13
  • 2017-03-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
相关资源
最近更新 更多