【问题标题】:python string search replacepython字符串搜索替换
【发布时间】:2010-11-14 02:56:55
【问题描述】:
SSViewer::set_theme('bullsorbit'); 

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

【问题讨论】:

  • 动态变化是什么意思?

标签: python string search replace


【解决方案1】:

无法对此进行测试,因此您可能需要摆弄正则表达式(它们可能是其中的错误。)

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 替换所有内容。通过在交互式控制台中运行来检查它
  • import re file_read = open("/var/www/rajaneesh/mysite/_config.php", "r") contents = file_read.read() file_read.close() 这是我想要的代码搜索该字符串 "SSViewer::set_theme('whatever')" 文件并将该字符串替换为新字符串
  • 你想从模式“SSViewer::set_theme('bullsorbit');”中找到'bullsorbit'并用另一个字符串替换所有出现的“bullsorbit”?你问的是这个吗?
  • 请注意,这仅适用于小写 [a-z] 如果您希望它捕获其他字符,则需要调整正则表达式。
【解决方案2】:
>> 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 开始工作,那可能看起来会更好,但这肯定会起作用

【讨论】:

  • 考虑一下:"SSViewer::set_theme('theme')" 将被替换为 "SSViewer::set_blah('blah')"
【解决方案3】:
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

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

    • 我以为他的意思是 Bullsorbit 正在动态变化,所以上面可能不是他需要的。
    • 动态变化究竟是什么意思?使用另一个字符串 'bullsorbit2' 运行它。
    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 2018-01-02
    • 2017-01-10
    • 1970-01-01
    • 2016-12-15
    • 2020-01-06
    相关资源
    最近更新 更多