Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 替换字符串的Replace命令条件_Python_String_For Loop_Replace_Conditional Statements - Fatal编程技术网

Python 替换字符串的Replace命令条件

Python 替换字符串的Replace命令条件,python,string,for-loop,replace,conditional-statements,Python,String,For Loop,Replace,Conditional Statements,要替换字符串中的某个单词,但继续得到以下结果: 字符串:“这是我的句子。” 用户输入要替换的内容:“is” 用户键入要替换word的内容:“was” 新字符串:“这是我的句子。” 如何确保它只替换单词“is”而不是它找到的任何字符串 代码功能: import string def replace(word, new_word): new_file = string.replace(word, new_word[1]) return new_file 非常感谢您的帮助,谢谢 不使用正

要替换字符串中的某个单词,但继续得到以下结果:

字符串:
“这是我的句子。”

用户输入要替换的内容:
“is”

用户键入要替换word的内容:
“was”

新字符串:
“这是我的句子。”

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

代码功能:

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

非常感谢您的帮助,谢谢

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

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

一个简单但不全面的解决方案(由Jean-Francios Fabre给出),不使用正则表达式

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

使用正则表达式字边界:

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
将被解释为退格。

使用正则表达式单词边界:

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
将被解释为退格。

很好。我搜索了一个重复项,但使用的是“替换”术语,而不是“查找”。我也是这样做的:。我认为“不是部分词”是这里的关键。至少现在“替换”部分已经涵盖:)@Tadhgmandald Jensen诀窍是用谷歌搜索关键词,只是每次我都忘了。所以这个引擎很好,因为你们可以用方括号过滤标签,但谷歌更适合一般搜索,99%的时候,SO答案会首先弹出!好发现。我搜索了一个重复项,但使用的是“替换”术语,而不是“查找”。我也是这样做的:。我认为“不是部分词”是这里的关键。至少现在“替换”部分已经涵盖:)@Tadhgmandald Jensen诀窍是用谷歌搜索关键词,只是每次我都忘了。所以这个引擎很好,因为你们可以用方括号过滤标签,但谷歌更适合一般搜索,99%的时候,SO答案会首先弹出!这不会保持原始的空白,因为您实际上是在用空格替换所有空白。另外,请在你的答案中提供一些信息,仅仅是一行代码并没有多大帮助。@Jean:完全同意。如果你不想使用正则表达式,谢谢你的提示和提示。和pythonic。这不会保持原来的空白,因为您正在有效地用空格替换所有空白。另外,请在你的答案中提供一些信息,仅仅是一行代码并没有多大帮助。@Jean:完全同意。如果你不想使用正则表达式,谢谢你的提示和提示。还有蟒蛇,非常感谢!这对我的节目来说太完美了@Jarred McMahan如果一个答案对你有用,那么请接受它,这样它就会被标记为“已回答”。非常感谢!这对我的节目来说太完美了@Jarred McMahan如果一个答案对你有效,那么请接受它,这样它就会被标记为“已回答”。