2012-02-24 70 views
0

我想從我的文件中選擇一個字符串,如20-30。我的代碼:Python中的簡單正則表達式

terms = re.findall(r'\d{2}-\d{2}',s) 

它返回正確的答案,但順序是不正確的

我在我的文件中的字符串是序列波紋管(從開始到文件末尾)

21-40 
38-25 
43-22 
34-31 

但它返回:

34-31 
21-40 
38-25 
43-22 

的數目是Unicode格式

+0

你是說你想要找到20-30而不是30-20嗎? – ruakh 2012-02-24 19:57:46

+0

@ruakh,不,他說這是他想找到的一個字符串的例子。 – 2012-02-24 20:00:44

+0

沒有ruakh,它返回我想要的確切的東西,但它們的順序不是從文件的開始到結束。首先是錯誤的順序。 – Mahdi 2012-02-24 20:00:52

回答

1

這種說法,與該字符串應該工作:

>>> import re 
>>> s = "21-40 38-25 43-22 34-31" 
>>> terms = re.findall(r'\d{2}-\d{2}',s) 
>>> terms 
['21-40', '38-25', '43-22', '34-31'] 

一定有別的事情上。輸入字符串被操縱如何?

+1

不,實際上它是從文件中讀取的,然後我使用這種模式 – Mahdi 2012-02-24 20:14:43

+2

@Mahdi,那麼該文件不包含您認爲它包含的內容。真。嘗試創建一個新文件,然後**鍵入**(不復制粘貼!)數字,然後再次嘗試使用該新文件。 – 2012-02-24 20:28:58

+0

@Mahdi聽起來這個錯誤可能是在文件的加載方式。您是否嘗試在應用正則表達式之前重新打印's'的值? – George 2012-02-24 22:59:56