Próbuję zastąpić jakiś tekst w pliku z Python 2.6

Zwraca jednak dodatkową linię tutaj jest mój kod:

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

Wejście:

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

Wynik:

post_max_size = 64M

sdfsdfsd

post_max_size = 64M

sdfsdf

post_max_size = 64M

dfsdfsdfsdfsdf
0
Rabit 22 sierpień 2012, 10:53

3 odpowiedzi

Najlepsza odpowiedź

Próbować: print replace, zamiast. Przecinek końcowy tłumi nową linię (ale dodaje spację). Aby uzyskać pełną kontrolę Użyj funkcji drukowania z __future__.

0
cdarke 22 sierpień 2012, 06:58

Dodatkowe wyjście, które widzisz, jest z print, jeśli piszesz ponownie plik, nie powinieneś zobaczyć dodatkowych przerw linii.

Spróbuj z tym: print replace,

Jest to niewielki punkt, ale należy również wybrać inną nazwę, jak replace jest nazwą metody w standardowej bibliotece dla ciągów.

1
Burhan Khalid 22 sierpień 2012, 07:10

Twój regex jest w porządku. print dodaje nową linię. Zamiast tego użyj write.

0
tuxuday 22 sierpień 2012, 06:58