2012-08-01 299 views
-1

我使用python來做一些文本比較。文本格式類似44=100
比方說,我有2個文本,44=10044=3001。我打電話給=左邊的字符串是標記,右邊是值。
現在我需要比較它們的標籤和值。標籤必須相同,44等於44,但值不必,只要其格式相同即可。即。 1003001採用相同的格式(普通數字)。但1.0E+744=1.0E+7是不同的。
t重點在於價值比較。即。我寫了一個腳本comp.py,當我運行comp.py 2000 30010時,我會得到輸出true;而我運行comp.py 100000 1.0E+8,輸出是false。我該怎麼做?我正在考慮將該值轉換爲正則表達式並將其與其他值進行比較。python:將字符串轉換爲正則表達式

僞代碼:

rex1 = '100000'.getRegrex(), rex2 = '1.0E+8'.getRegrex(), rex1.compare(rex2) 

它是一個可行的辦法?有什麼建議?

+0

你的解釋很暗淡,你能列出一個輸入和想要的輸出列表嗎? – tdihp 2012-08-01 05:25:18

+0

對我的要求感到抱歉。重點在於價值比較。即。我寫了一個腳本comp.py,當我運行comp.py 2000 30010時,我將得到輸出'真';而我運行comp.py 100000 1.0E + 8,輸出是'假'。我們能做到嗎? posudo代碼:rex1 ='100000'.getRegrex(),rex2 ='1.0E + 8'.getRegrex(),rex1.compare(rex2) – user462872 2012-08-01 05:38:36

回答

1

REX1 = '100000'.getRegrex(),REX2 =' 1.0E + 8'.getRegrex(),rex1.compare(REX2)

你的做法是錯誤的。從給定的字符串中「推出」正則表達式不僅困難,而且也不合邏輯。你會做的是:

  • 定義你的類型。每種類型都有相應的正則表達式。
  • 將您的輸入文本與所有定義的類型進行比較,並檢查它的類型。
  • 比較這兩種類型。
+0

hi Thrustmaster。我們不能從任何給定的字符串生成正則表達式嗎?如果它必須預先定義,那麼我可能需要爲所有標籤創建一個字典... – user462872 2012-08-01 05:56:06

+0

@ user462872:是的,那就是我的意思。你需要爲正則表達式創建一個字典。 – SuperSaiyan 2012-08-01 06:02:43

+0

謝謝你,Thrustmaster。 – user462872 2012-08-01 06:06:43

1

其實,你的想法rex1 = '100000'.getRegrex()可以做

rex1 = re.compile('10000') 

但作爲Thustmaster指出的那樣,你可能要與您的數據模式的更抽象定義正則表達式。

+0

這沒有幫助解決陳述的問題; 「10000」的正則表達式只會匹配「10000」,並且沒有其他字符串。 – tripleee 2013-07-13 08:43:08

相關問題