python - string.replace 替换所有出现的地方

标签 python regex replace

我正在尝试使 string.replace 替换除以特定字符开头的单词之外的所有单词,例如〜,但如果我有一个单词只有一个字母,该字母就会从我想保留的单词中删除

代码

import re

st1 = "dolphin fish ~shark eel octopus ~squid a"

for i in re.findall(r"\b(?<!~)\w+", st1):
    st1 = st1.replace(i, "")

print(st1)

我想要发生什么:

输入: “海豚鱼~鲨鱼鳗 Octopus ~鱿鱼a”

输出: “~鲨鱼~鱿鱼”

发生了什么:

输入: “海豚鱼~鲨鱼鳗 Octopus ~鱿鱼a”

输出: “~shrk~squid”

我认为发生这种情况是因为它替换了“a”的所有实例,包括其他单词中的实例。如何确保它只删除预期的实例?

最佳答案

我实际上建议在这里使用正则表达式查找所有方法:

st1 = "dolphin fish ~shark eel octopus ~squid a"
matches = re.findall(r'~\w+', st1)
output = " ".join(matches)
print(output)  # ~shark ~squid

关于python - string.replace 替换所有出现的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77813986/

相关文章:

python - 如何为 C 函数使用 LAPACK 库的 Python 编译 C 扩展?

javascript - JQuery:在解析 HTML 时防止加载图像

javascript - Javascript 正则表达式中的分组是如何工作的?

jQuery 将两个特定单词之间的空格替换为不间断空格

java |通过正则表达式传递插入符号

python - 在不同列中打印数据库变量

python - 如何向现有的 python 函数添加一行代码

python - 如何检查一个数据帧中的列值是否在另一个数据帧的列中可用?

ruby - gsub 中的反斜杠(转义和反向引用)

MySQL 替换 unicode 字符