2009-07-26 151 views
2
SSViewer::set_theme('bullsorbit'); 

這是我的字符串。我想在字符串"SSViewer::set_theme('bullsorbit'); "中搜索並用另一個字符串替換'bullsorbit''bullsorbit'字符串正在動態變化。python字符串搜索替換

+2

什麼*動態改變*意味着什麼? – SilentGhost 2009-07-26 10:51:26

回答

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() 
+0

謝謝你的回覆..它是文件..我想讀取文件和搜索該字符串,並取代什麼 – rajaneesh 2009-07-26 09:35:48

+0

這將取代所有與'my_string`。通過在交互式控制檯中運行它來檢查此問題 – AutomatedTester 2009-07-26 09:36:35

+0

import re file_read = open(「/ var/www/rajaneesh/mysite/_config.php」,「r」) contents = file_read.read() file_read.close我想要搜索該字符串「SSViewer :: set_theme \('whatever')」文件,並用新字符串替換該字符串 – rajaneesh 2009-07-26 09:40:13

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將返回('')中的項目的字典,然後替換它們。如果你能得到分的工作,然後可能看起來更好,但是這肯定會工作

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 
0

,而你的解釋是不完全清楚,我想你可能也利用了以下內容:

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