2012-08-22 64 views
0

我試圖用Python來代替一些文本文件中的2.6蟒蛇正則表達式替換回報額外的 n

但是,它返回一個額外的換行符這裏是我的代碼:

for line in fileinput.input('/etc/php5/apache2/php.ini', inplace=True): 
    replace = re.sub(r'(post_max_size =).[0-9]+(M)', r'\1 64\2', line) 
    print replace 

輸入:

post_max_size = 6M 
sdfsdfsd 
post_max_size = 4M 
sdfsdf 
post_max_size = 164M 
dfsdfsdfsdfsdf 

輸出:

post_max_size = 64M 

sdfsdfsd 

post_max_size = 64M 

sdfsdf 

post_max_size = 64M 

dfsdfsdfsdfsdf 

回答

0

嘗試: print replace,改爲。尾部逗號會抑制換行符(但會添加尾部空格)。爲了完全控制,請使用__future__的打印功能。

+0

謝謝cdarke。它的工作正常。但是,我不明白'_future_'。你能解釋一下嗎?對不起,我是如此新的python。 – Rabit

+0

@Rabit;如果你是Python新手,那麼不要太擔心新的'print'函數。它是Python 3的默認值,從(我認爲)Python 2.6中可以使用它,如果你:'from __future__ import print_function'。它更易於使用並提供更多的控制,但可能會更好,直到您轉到Python 3。 – cdarke

1

您正在輸入的額外輸出是從print開始的,如果您將文件寫回去,則不應該看到額外的換行符。

這種嘗試:print replace,

這是一個小點,但你也應該選擇一個不同的名稱,如replace是在字符串標準庫的方法名。

+0

我剛剛嘗試過,發現文件只是空白。不過謝謝你的及時答覆。 – Rabit

+0

你是什麼意思'返回空白'? –

+0

只是一個空白的文件。 – Rabit

0

你的正則表達式很好。 print增加換行符。改爲使用write