2010-07-23 52 views
2

使用組時的re.sub問題我正嘗試使用正則表達式來排列一些文本,並使用re.sub與 number

假設這是一個幾乎csv的文件,我必須清理它才能完全使用csv。

我更換了所有\ t由\ n這樣做:

t = t.replace("\n", "\t") 

...和它的作品就好了。之後,我需要將\ t返回\ n,換成我的每一個CSV行。我用這個表達式:

t = re.sub("\t(\d*?);", "\n\1;", t, re.U) 

這個問題是有效的......但部分。 \ n被正確添加,但不是跟隨我的匹配組,然後是^ A(根據Vim)

我嘗試使用re.findall我的正則表達式,它的工作原理沒錯......那麼,根據你的說法可能是錯的?

我的CSV行最後應該是這樣的:

number;text;text;...;...;\n 

感謝您的幫助!

回答

4

您的\1被解釋爲ascii字符1. 嘗試使用\\1r"\n\1;"

+0

你先生,是一個血腥的瘋狂天才。這讓我想衝一下東西。在我遇到的所有錯誤中,或許沒有一個與那些該死的事實有關的那些有害的東西,我看到的字符集和計算機看到的字符集是兩個不同的東西。 – tel 2011-07-04 19:39:40

0

Scharron說,總是總是使用原始字符串(r'')符號與正則表達式。進入這種習慣,然後你就不必去調試這樣的奇怪問題。

r'\n\1;'