2012-02-24 19 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

+0

@ruakh、いいえ、彼はそれが彼が見つけたいと思う文字列の例だと言っています。 –

+0

ruakhは、私が望むものを返しますが、それらのシーケンスはファイルの最初から最後までではありません。それらのうちの最初は不正確な順序である。 – Mahdi

答えて

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

+2

@Mahdi、ファイルには、それが含まれていると思われる内容は含まれていません。本当に。新しいファイルを作成してから、** **(コピーして貼り付けないで!)と入力して、その新しいファイルでもう一度試してみてください。 –

+0

@Mahdiファイルがどのように読み込まれているかのようにエラーが発生するようです。あなたは正規表現を適用する前に 's'の値が何であるかを印刷してみましたか? – George