Python 字符串搜索替换
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()