如何用python替换句子中的特定单词
我有一个句子,比如“你好,这是你好,你好”。我需要做的是保留第一个hello,但删除句子中的其他“hello”。我该怎么做呢如何用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(
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循环中使用了类似的东西。