2013-02-23 76 views
0

我有兩個變量,如下所示。目標是檢查baseAU變量中的值是否與「out」匹配。這可以做的最簡單的方法是什麼?一種方法是將其分解並放入一個列表中並對其進行解析。還有其他簡單的方法嗎?匹配值與列表

baseAU = "AU_LINUX_ANDROID_test.04.02.01.40.144" 

out= 
" 
AU_LINUX_ANDROID_test.04.02.01.40.134 
AU_LINUX_ANDROID_test.04.02.01.40.135 
AU_LINUX_ANDROID_test.04.02.01.40.136 
AU_LINUX_ANDROID_test.04.02.01.40.137 
AU_LINUX_ANDROID_test.04.02.01.40.138 
AU_LINUX_ANDROID_test.04.02.01.40.139 
AU_LINUX_ANDROID_test.04.02.01.40.140 
AU_LINUX_ANDROID_test.04.02.01.40.141 
AU_LINUX_ANDROID_test.04.02.01.40.142 
AU_LINUX_ANDROID_test.04.02.01.40.143 
AU_LINUX_ANDROID_test.04.02.01.40.144 
AU_LINUX_ANDROID_test.04.02.01.40.145 
AU_LINUX_ANDROID_dev.04.02.01.49.106 
AU_LINUX_ANDROID_dev.04.02.01.49.107 
AU_LINUX_ANDROID_dev.04.02.01.49.108 
AU_LINUX_ANDROID_dev.04.02.01.49.109 
AU_LINUX_ANDROID_dev.04.02.01.49.110 
AU_LINUX_ANDROID_dev.04.02.01.49.111 
AU_LINUX_ANDROID_dev.04.02.01.49.112 
AU_LINUX_ANDROID_dev.04.02.01.49.113 
AU_LINUX_ANDROID_dev.04.02.01.49.114 
AU_LINUX_ANDROID_dev.04.02.01.49.115 
AU_LINUX_ANDROID_dev.04.02.01.49.116 
AU_LINUX_ANDROID_dev.04.02.01.49.117 
AU_LINUX_ANDROID_dev.04.02.01.49.118 
" 
+0

你試過' baseAU in out'? – Blender 2013-02-23 03:09:06

+0

是的,但也與AU_LINUX_ANDROID_test.04.02.01.40.14相匹配(注意它實際上是AU_LINUX_ANDROID_test.04.02.01.40.144) – user1934146 2013-02-23 03:14:43

回答

1

分割你的字符串成一個列表:

baseAU in out.split() 
1

的一個方法是匹配的字符串,用in

if baseAU in out: 
    print "Have match" 

一個更方便的方法是打破out可變進設置,並使用集合in運算符。這應該更有效率。

s = set(out.split()) 
if baseAU in s: 
    print "Have match" 
+0

如果您需要檢查多個輸出值,它不會更有效嗎?在我看來,如果僅僅一次檢查單個值,那麼創建集合的開銷(並且如果不需要,則按行分割)將總體上更昂貴。 – jpmc26 2013-02-23 21:43:44

0

一個簡單的方法來匹配一行字符串:

if "%s\n" % baseAU in out: 
    print "Match" 

AU_LINUX_ANDROID_test.04.02.01.40.14不會AU_LINUX_ANDROID_test.04.02.01.40.144匹配

+0

如果換行符以'\ r'開頭就會中斷,在Windows和較舊的Mac OS中就是這種情況。 – jpmc26 2013-02-23 21:40:00