2010-08-10 18 views
1

我不知道如果我正確的話來說,但希望的例子將它清除掉:適用原字符串函數的返回值

re.search(fileMask.replace('*','.*?'),fileName): 

對於在re.search第一個參數()調用,我如何確保我將fileMask.replace()調用返回的值作爲原始字符串傳遞?

某事的效果:

re.search(r'fileMask.replace('*','.*?')',fileName): 

..although不會工作,因爲我確實需要文件匹配函數被調用。

+0

我不知道你想達到什麼,但只是想知道glob模塊是否可以幫助http://docs.python.org/library/glob.html#module-glob – MattH 2010-08-10 20:19:34

回答

1
re.search(fileMask.replace('\*','\.\*?').encode('string_escape'), fileName): 
+0

只要r'一些文字'等同於'某些文字'.encode('string_escape'),那麼這正是我所尋找的。謝謝。 – rmisio 2010-08-10 20:40:53

+0

就是這樣。 ''\ r \ n'== r'\ r \ n''返回False,並且''\ r \ n'.encode('string_escape')== r'\ r \ n''返回True。 – MikeWyatt 2010-08-10 21:33:57

+0

這不適用於所有字符串和所有轉義,唉:'\ 232'.encode('string_escape')=='\\ x9a' – 2011-01-07 01:00:51

2

有沒有這樣的類型爲「原始字符串」 - 有文字(字符串類型)被這樣命名,但對象,這類文字代表的字符串對象 - 僅此而已,無所不及。例如,文字r'a\b''(「原始字符串文字」)和'a\\b'(正常字符串文字)完全代表相同字符串值:長度爲三的字符串值之一,字符a,反向間隙和b按此順序排列。如果您打印這些對象,則顯示爲a\b;如果您打印他們的repr,則兩種情況都是a\\b

因此,很難理解你的問題。您能否舉例說明fileMaskfileName的一些可能值,以及您期望從結果re.search調用中得到的結果?

此外,

我實際需要的文件匹配功能 被調用。

這可能確實是一個問題,因爲似乎沒有功能命名爲fileMask,而(它似乎)一由此而得名。你的意思是「需要調用fileMask的方法」嗎?

+0

我的意思是我需要替換方法稱爲字符串變量fileMask。以另一種方式提出我的問題: myFunctionA(myFunctionB()) - 不修改myFunctionB(),如何確保myFunctionB的返回值在上述語句中作爲「原始字符串」傳遞給myFunctionA? – rmisio 2010-08-10 20:36:38

+0

@ rmisio,有**沒有'作爲'原始字符串'通過':重讀我的答案。原始字符串LITERAL(沒有其他類型的「原始字符串」!)僅僅是一個稍微不同的語法,用於在編譯時表示一個完美正常的字符串;那麼就沒有「傳遞」(在運行時)任何特定形式的編譯時*語法*這樣的事情 - 嚴重的是,您反覆的斷言使得與着名的「無色綠色想法瘋狂睡眠」 。 **請**編輯您的Q以提供**示例**,因爲我已經要求您這樣做。 – 2010-08-10 21:04:18