如何在Python中有条件地替换字符串?

时间:2017-07-31 20:06:32

标签: python

我需要在字符串中查找子字符串,如果找不到,请执行操作。所以我这样做,它工作正常:

if 'AAA' not in myString: 
   print "AAA is not in myString"

然而,我需要的是避免AAA是XAAA的一部分。换句话说,我不希望我的脚本在if 'AAA' not in myString时注意到“XAAA”的存在。那么如何将上面的if-clause修改为以下内容:

if 'AAA' not in myString except for cases where 'AAA' is a part of 'XAAA':
    print "AAA is not in myString"

4 个答案:

答案 0 :(得分:7)

我喜欢模块解决方案

if not re.search(r'(?<!X)AAA', myString):
    ...

答案 1 :(得分:4)

  

我不希望我的脚本在"XAAA" if 'AAA' not in myString时发现XAAA存在。

如果myString不是AAA的子字符串,您可以先从myString删除子字符串if 'AAA' not in myString.replace('XAAA', ''): # do action 的所有匹配项,然后然后测试{1}}:

for i in range(1, len(AlivePlayers), 1):
    bar_nein=StringVar()
    player_label=tk.Label(self, textvariable=bar_nein)
    player_label.pack()
    word1=AlivePlayers[i].Name # a string
    word2=" the " # a string
    word3=AlivePlayers[i].Role.keyword # a string
    phrase=word1+word2+word3
    bar_nein.set(phrase)

答案 2 :(得分:3)

有两种方式。

您可以从字符串中删除XAAA,然后比较:

if 'AAA' not in myString.replace('XAAA', ''):
    # do something

或者你可以先检查一下然后比较:

if 'XAAA' not in myString:
    if 'AAA' not in myString:
        # do something

两衬垫:

if 'XAAA' not in myString and 'AAA' not in myString:
    # do something

答案 3 :(得分:0)

正则表达式可能会非常适合您。

例如,您可以将字符串与所谓的&#34;正则表达式匹配,&#34;的 /[^X]?AAA/

此正则表达式测试字符串AAA是否存在 not ,字符串X前面的字符串?

(需要AAA来支持X出现在字符串开头的可能性,其中array_map可能在其前面。“

每种编程语言都支持正则表达式......&#34;这就是原因。&#34;

(仅供参考:&#34;正则表达式是一个非常深的水池,非常值得探索。&#34; 在实际应用中,它会产生许多&#34 ;实际的应用,&#34;比如这个,即使你所做的只是撇去它的表面而且非常愉快地呆在那里。)