任何人都可以帮忙吗?想象一下:
def example(s):
s = s.replace('foo', 'foo bar')
return s
现在这将用'foo bar'取代'foo';但我想做一些不同的事情: *想象一下,我有'foo something';我希望最终的结果是:'foo something bar'
进行此类检查的最佳方法是什么(如果有'某事',我想保留它)。
任何人都可以帮忙吗?
NM
答案 0 :(得分:8)
使用re
模块。
import re
def replace(s):
return re.sub('foo(.*)', 'foo\1 bar', s)
replace('foo something') #'foo something bar'
答案 1 :(得分:3)
import re
mystring = "foo something blah"
re.sub(r"foo\s+(\w+)", r"foo \1 bar", mystring)
答案 2 :(得分:0)
对于您上面提到的具体示例:
import re
text = """Line 1 %find_lang %{name} has two %find_lang %{name}
occurences.
Line 4 has one %find_lang %{name}.
%find_lang %{name}
Line 6 is just the search pattern and a new line."""
print re.sub(
'%find_lang %{name}',
'%find_lang %{name} %{?no_lang_C}',
text
)
答案 3 :(得分:0)
对于练习,一种不使用正则表达式的笨重方式:
def replace_foo(arg):
content = arg.split()
idx_foo = content.index("foo")
content.insert(idx_foo+2, "bar")
return ' '.join(content)
(但你应该真的使用re
...)
答案 4 :(得分:0)
我刚刚修改了以下内容:
def replace_lang_macros(s):
return re.sub(r'%find_lang(.*)', r'%find_lang\1 %{?no_lang_C}', s)
谢谢大家;无论在%find_lang之后的是什么,它仍然存在...没有原始字符串表示法我会得到奇怪的符号,但这并不是一个很大的挑战。