簡體   English   中英

python字符串搜索替換

[英]python string search replace

SSViewer::set_theme('bullsorbit'); 

這是我的弦。 我想在字符串"SSViewer::set_theme('bullsorbit'); "然后用另一個字符串替換'bullsorbit' 'bullsorbit'字符串是動態變化的。

在無法測試的情況下,您可能需要弄弄正則表達式(它們中可能有錯誤)。

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()
>> 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上班,那可能看起來更好,但這肯定可以

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

盡管您的解釋尚不完全清楚,但我認為您可以使用以下內容:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM