Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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替换句子中的特定单词_Python_String_Replace - Fatal编程技术网

如何用python替换句子中的特定单词

如何用python替换句子中的特定单词,python,string,replace,Python,String,Replace,我有一个句子,比如“你好,这是你好,你好”。我需要做的是保留第一个hello,但删除句子中的其他“hello”。我该怎么做呢 parts = old.split("hello") parts[1:1] = "hello" new = "".join(parts) 看来应该有更好的办法 似乎应该有更好的方法…非常糟糕的方法: s = "hello this is hello stackoverflow hello" s = s.replace("hello", "world").replace(

我有一个句子,比如“你好,这是你好,你好”。我需要做的是保留第一个hello,但删除句子中的其他“hello”。我该怎么做呢

parts = old.split("hello")
parts[1:1] = "hello"
new = "".join(parts)
看来应该有更好的办法

似乎应该有更好的方法…

非常糟糕的方法:

s = "hello this is hello stackoverflow hello"
s = s.replace("hello", "world").replace("world", "hello", 1)
它将用
world
替换所有
hello
,然后用
hello

替换第一个
world
,非常糟糕:

s = "hello this is hello stackoverflow hello"
s = s.replace("hello", "world").replace("world", "hello", 1)
s = "hello this is hello stackoverflow hello"
t = "hello"

i = s.index(t) + len(t) + 1
s = s[:i] + s[i:].replace(t, "")

print s # hello this is  stackoverflow 

它将用
world
替换所有的
hello
,然后用
hello
仅替换第一个
world
,必须比Ned的快,但价格是可读的:

s = "hello this is hello stackoverflow hello"
t = "hello"

i = s.index(t) + len(t) + 1
s = s[:i] + s[i:].replace(t, "")

print s # hello this is  stackoverflow 
>>> idx = s.find('hello') + len('hello')
>>> s[:idx] + s[idx:].replace('hello', '')
'hello this is  stackoverflow '

必须比Ned的快,但价格是可读的:

>>> idx = s.find('hello') + len('hello')
>>> s[:idx] + s[idx:].replace('hello', '')
'hello this is  stackoverflow '

首先,每个人都会认为这是一个匹配模式难题,所以问题是为什么
hello
会重复

如果假设第一个
hello
,则对字符串进行简单筛选即可解决问题

s = 'hello this is hello stackoverflow hello'
l = s.split(' ')
"hello %s" % " ".join(filter (lambda a: a != 'hello', l))
'hello this is stackoverflow'
或:


首先,每个人都会认为这是一个匹配模式难题,所以问题是为什么
hello
会重复

如果假设第一个
hello
,则对字符串进行简单筛选即可解决问题

s = 'hello this is hello stackoverflow hello'
l = s.split(' ')
"hello %s" % " ".join(filter (lambda a: a != 'hello', l))
'hello this is stackoverflow'
或:



仅供参考,空格可能是这个的一个问题。问题是所有的“hello”可能不是相同的大写字母。若任何一个hello的大小写不同,它就不能正常工作。@incognito2。不公平!大写问题完全改变了您原来的问题。仅供参考,空格可能与此问题有关。问题是所有的“hello”可能不是相同的大写。若任何一个hello的大小写不同,它就不能正常工作。@incognito2。不公平!大写问题完全改变了您原来的问题。在您的输入字符串已经包含“hello”之前的“world”之前效果很好。在您的输入字符串已经包含“hello”之前的“world”之前效果很好。只有当第一个
hello
恰好位于字符串的开头时,这才有效。这正是为什么我说了我所说的话,我们将此问题视为一个模式问题,因此我们试图解决它,但为什么在本例中hello会重复?它们是由第一个解决方案失败的人输入的随机句子,例如,
噢,你好,这是hello stackoverflow hello
(它生成
你好哦,你好,这是stackoverflow
)。当然,它会失败,我的答案是假设
hello
是第一个单词。同样,这是一种奇怪的模式,试图进行编程更正。只有当第一个
hello
恰好位于字符串的开头时,这种模式才有效。正是我所说的原因,我们将此问题视为模式问题,因此我们尝试将其修复,但是为什么在这个例子中hello会重复?它们是由第一个解决方案失败的人输入的随机句子,例如,
oh hello,这是hello stackoverflow hello
(它产生
hello oh hello,这是stackoverflow
)。当然它会失败,我的答案是假设
hello
是第一个单词。同样,这是一种奇怪的模式来尝试编程纠正。我最初在for循环中使用了类似的东西。我最初在for循环中使用了类似的东西。