Страница проекта на PyPI.
Там есть достаточно подробный HowTo с примерами, но мало показано применение модуля непосредственно в коде – больше в консоли.
В Python есть строковый метод replace:
Help on function replace in string:
string.replace = replace(s, old, new, maxsplit=-1)
replace (str, old, new[, maxsplit]) -> stringReturn a copy of string str with all occurrences of substring
old replaced by new. If the optional argument maxsplit is
given, only the first maxsplit occurrences are replaced.
но pysed
предоставляет больше возможностей, в том числе вариации методов strip
, join
и т.п.
pysed
использует три фукнции:
replace()
– замена текста;
append()
– вставка нового текста;
lines()
– печать строк/символов;
Примеры вызова из скрипта.
Напечатать все строки:
#!/usr/bin/env python import pysed text = 'This is some long text.nChange me!nLine 3.nLine 4.nFinish.' print 'nRunning usual lines print: n' result = pysed.lines(text, 'all') print result
Результат:
$ ./sed.py Running usual lines print: This is some long text. Change me! Line 3. Line 4. Finish.
Подсчёт строк в тексте:
print 'nRunning lines count: n' result = pysed.lines(text, 'count') print result
Результат:
$ ./sed.py Running lines count: 0 <-- This is some long text. 1 <-- Change me! 2 <-- Line 3. 3 <-- Line 4. 4 <-- Finish.
Печать диапазона строк:
print 'nPrinting selected lines range: n' result = pysed.lines(text, '[0-2]') print result
Результат:
$ ./sed.py
Printing selected lines range: This is some long text. Change me! Line 3. Line 4.
Печать выбранных строк (1, 2 и 4):
print 'nPrinting selected lines numbers: n' result = pysed.lines(text, '0, 1, 3') print result
Результат:
$ ./sed.py Printing selected lines numbers: This is some long text. Change me! Line 4.
Печать строк с “шагом” – через 3 строки:
print 'nPrinting lines with step: n' result = pysed.lines(text, 'step=3/*') print result
Результат:
$ ./sed.py Printing lines with step: This is some long text. Line 4.
Замена текста:
print 'nRunning replace: n' replace = pysed.replace(text, 'Change me!', 'Changed you' + ' <--- :D') print replace
Результат:
$ ./sed.py Running replace: This is some long text. Changed you <--- :D Line 3. Line 4. Finish.
Замена с подсветкой (зелёным):
print 'nRunning replace and colorizing: n' replace = pysed.replace(text, 'Change me!', 'Changed you/green') print replace
Результат (не увидим тут…):
$ ./sed.py Running replace and colorizing: This is some long text. Changed you Line 3. Line 4. Finish.
Замена всех символов нижнего регистра на точку:
print 'nRunning replace all lowercase symbols: n' replace = pysed.replace(text, '[a-z]', '.') print replace
Результат:
$ ./sed.py Running replace all lowercase symbols: T... .. .... .... ..... C..... ..! L... 3. L... 4. F......
Замена всех символов i в линиях 1-3:
print 'nRunning replace in selected lines: n' replace = pysed.replace(text, 'lines=[0-2]/i', '.') print replace
Результат:
$ ./sed.py Running replace in selected lines: Th.s .s some long text. Change me! L.ne 3. Line 4. Finish.
Заменить все вхождения слова Line на символы верхнего регистра:
print 'nRunning replace to UPPERcase one word: n' replace = pysed.replace(text, 'upper/Line', 'line') print replace
Результат:
$ ./sed.py Running replace to UPPERcase one word: This is some long text. Change me! LINE 3. LINE 4. Finish.
Заменить весь текст на прописные символы:
print 'nRunning replace to UPPERcase whole text: n' replace = pysed.replace(text, 'upper=*/', '') print replace
Результат:
$ ./sed.py Running replace to UPPERcase whole text: THIS IS SOME LONG TEXT. CHANGE ME! LINE 3. LINE 4. FINISH.
Добавить текст This is перед текстом Line:
print 'nRunning append (insert): n' replace = pysed.append(text, 'Line', 'This is ') print replace
Результат:
$ ./sed.py Running append (insert): This is some long text. Change me! This is Line 3. This is Line 4. Finish.
Пример работы с файлом.
Создадим файл:
$ echo "This is some text" > text.txt $ cat text.txt This is some text
Создадим скрипт:
#!/usr/bin/env python # -*- coding: utf-8 -*- import pysed # создаём объект файла с текстом with open('text.txt', 'r') as infile: text = infile.read() print 'nOriginal text: ' + text # меняем в тексте some на SOME print 'Running replace...n' newtext = pysed.replace(text, 'upper/some', 'some') print 'New text: ' + newtext +'n' # создаём нвоый файл и записываем в него результат print 'Writing file...n' with open('newtext.txt', 'w') as outfile: outfile.write(newtext) # читаем содержимое нового файла out = open('newtext.txt', 'r') print 'Reading new text in old file:n' print out.read() + 'n'
И результат его выполнения:
$ ./sed.py Original text: This is some text Running replace... New text: This is SOME text Writing file... Reading new text in old file: This is SOME text