Python 字符串搜索替换

2 投票
4 回答
3756 浏览
提问于 2025-04-15 13:10
SSViewer::set_theme('bullsorbit'); 

这是我的字符串。我想在这个字符串中搜索 "SSViewer::set_theme('bullsorbit'); ",然后把 'bullsorbit' 替换成另一个字符串。注意,'bullsorbit' 这个字符串是动态变化的。

4 个回答

0

在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这种情况下,我们需要找到问题的原因并解决它。通常,我们可以通过查看错误信息来帮助我们理解发生了什么。

错误信息就像是程序在告诉我们哪里出了问题。它可能会指出具体的行号,或者给出一些提示,告诉我们可能的错误类型。理解这些信息是解决问题的第一步。

此外,很多时候我们可以在网上找到其他人遇到类似问题的解决方案,比如在StackOverflow这样的论坛上。这里有很多程序员分享他们的经验和解决办法,大家可以互相帮助。

总之,当你在编程时遇到困难,不要气馁。仔细阅读错误信息,搜索相关问题的解决方案,慢慢你就会变得更加熟练。

st = "SSViewer::set_theme('"
for line in open("file.txt"):
    line=line.strip()
    if st in line:
        a = line[ :line.index(st)+len(st)]
        b = line [line.index(st)+len(st): ]
        i = b.index("')")
        b = b[i:]
        print a + "newword" + b
1
>> my_string = "SSViewer::set_theme('bullsorbit');"
>>> import re
>>> change = re.findall(r"SSViewer::set_theme\('(\w*)'\);",my_string)
>>> my_string.replace(change[0],"blah")
"SSViewer::set_theme('blah');"

这段代码虽然不太优雅,但能正常工作。findall这个函数会返回一个字典,里面包含了单引号(')中的所有项目,然后再进行替换。如果你能让sub这个函数正常工作,那样看起来可能会更好,但这个方法肯定是有效的。

3

现在没法测试这个,所以你可能需要调整一下正则表达式(里面可能有错误)。

import re
re.sub("SSViewer::set_theme\('[a-z]+'\)", "SSViewer::set_theme('whatever')", my_string)

这就是你想要的吗?

刚刚测试了一下,这里有一些示例输出:

my_string = """Some file with some other junk
SSViewer::set_theme('bullsorbit');
SSViewer::set_theme('another');
Something else"""

import re
replaced = re.sub("SSViewer::set_theme\('[a-z]+'\)", "SSViewer::set_theme('whatever')", my_string)
print replaced

产生的结果是:

Some file with some other junk
SSViewer::set_theme('whatever');
SSViewer::set_theme('whatever');
Something else

如果你想对一个文件进行操作:

my_string = open('myfile', 'r').read()

撰写回答