python字符串搜索替换

时间:2009-07-26 09:23:55

标签: python string search replace

SSViewer::set_theme('bullsorbit'); 

这是我的字符串。我希望在字符串"SSViewer::set_theme('bullsorbit'); "中搜索并将'bullsorbit'替换为另一个字符串。 'bullsorbit'字符串正在动态变化。

4 个答案:

答案 0 :(得分: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()

答案 1 :(得分: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将返回('')内的项目字典,然后替换它们。如果你可以接受工作那么可能看起来更好但是这肯定会起作用

答案 2 :(得分:0)

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

答案 3 :(得分:0)

虽然您的解释并不完全清楚,但我认为您可以使用以下内容:

open(fname).read().replace('bullsorbit', 'new_string')