仅替换第一次出现的字符串?

Posted

技术标签:

【中文标题】仅替换第一次出现的字符串?【英文标题】:Replace first occurrence only of a string? 【发布时间】:2011-08-25 17:47:32 【问题描述】:

我有这样的事情:

text = 'This text is very very long.'
replace_words = ['very','word']

for word in replace_words:
    text = text.replace('very','not very')

我只想替换第一个“非常”或选择覆盖哪个“非常”。我正在对大量文本执行此操作,因此我想控制如何替换重复的单词。

【问题讨论】:

Replace first occurrence of string in Python的可能重复 【参考方案1】:
text = text.replace("very", "not very", 1)

第三个参数是要替换的最大出现次数。 来自the documentation for Python:

string.replace(s, old, new[, maxreplace]) 返回字符串 s 的副本,其中所有出现的子字符串 old 都替换为 new。如果给出了可选参数 maxreplace,则替换第一个 maxreplace 出现。

【讨论】:

【参考方案2】:

来自http://docs.python.org/release/2.5.2/lib/string-methods.html

替换(旧的,新的[,计数]) 返回字符串的副本,其中所有出现的子字符串 old 都替换为 new。如果给出了可选参数计数,则只有 第一次出现的次数被替换。

我没试过,但我相信它有效

【讨论】:

【参考方案3】:
text = text.replace("very", "not very", 1)

>>> help(str.replace)
Help on method_descriptor:

replace(...)
    S.replace (old, new[, count]) -> string

    Return a copy of string S with all occurrences of substring
    old replaced by new.  If the optional argument count is
    given, only the first count occurrences are replaced.

【讨论】:

以上是关于仅替换第一次出现的字符串?的主要内容,如果未能解决你的问题,请参考以下文章

Hive 查询仅替换第一次出现的子字符串

如何仅在 Oracle SQL 中的字符串开头替换出现?

如果字符仅出现在开头,则替换它

LibreOffice 替换宏 - 仅替换一次并按格式替换

仅替换 VBA 中字符串中最后一次匹配的匹配项

仅替换模式中的第二次出现