2012-06-12 49 views
2

我用Python編寫了XML parser,並且只用added functionality來從另一個目錄中讀取另一個腳本。用python比較和處理字符串

我有兩個參數,第一個是我解析XML的路徑。其次是我想與第一個路徑匹配的另一個XML文件中的字符串;

arg1 = \work\parser\main\tools\app\shared\xml\calculators\2012\example\calculator
path = calculators/2012/example/calculator

我如何比較兩個字符串匹配識別他們都引用了同樣的事情,而且,我怎麼可以從任一字符串中去除calculator,所以我可以存儲&使用?

編輯

只是有一個想法。在將路徑轉換爲導入語句時,我使用正則表達式將當年出來的路徑與year = re.findall(r"\.(\d{4})\.", path)之後的Python路徑中的數字相關聯。

我明顯可以拆分字符串,並使用正則表達式來匹配路徑作爲arg1中的模式,但這似乎很漫長。當然有更好的方法?

+6

這將有助於,如果贊成反對,所以我至少可以學到一些東西... –

回答

2

在這裏,我假設你實際上是在談論的字符串,而不是文件路徑 - 爲其@ mgilson的建議是更好

我如何比較兩個字符串匹配識別他們都 引用

那麼首先你需要確定你的「同樣的事情」

意思相同的事情

乍一看,如果第二個字符串以反斜槓的第一個字符串結尾,那麼您有一個匹配。

arg1 = r'\work\parser\main\tools\app\shared\xml\calculators\2012\example\calculator' 
arg2 = r'calculators/2012/example/calculator' 

>>> arg1.endswith(arg2.replace('/','\\')) 
True 

而且,我怎樣才能從 剝離計算器或者字符串,所以我可以存儲&使用它呢?

您還需要決定是否要剝去第一計算器,最後計算器或字符串中計算器的任何一次出現。

如果你只是想在分離後去除最後一個字符串,那麼它的簡單:

>>> arg2.split('/')[-1] 
'calculator' 

我們拿到一部開拓創新的字符串返回,而不進行最後一位:

>>> '/'.join(arg2.split('/')[:-1]) 
'calculators/2012/example' 
+0

現在,那'計算器'實際上成爲一個壞榜樣。這是字符串中的最後一個實例,在實踐中可能永遠不會被稱爲「計算器」。這雖然很有幫助。謝謝 :) –

1

這裏,試試這個:

arg1 = "\work\parser\main\tools\app\shared\xml\calculators\2012\example\calculator" 
path = "calculators/2012/example/calculator" 

arg1=arg1.replace("/","\\") 
path=path.replace("/","\\") 
if str(arg1).endswith(str(path)) or str(path).endswith(str(arg1)): 
    print "Match" 

這應該適合您的需求。歡呼聲:)