Строки в python 3: методы, функции, форматирование

В следующей таблице перечислены функции, которые Visual Basic предоставляет в Microsoft.VisualBasic.Strings классе для поиска и работы со строками. Их можно рассматривать как Visual Basic встроенных функций; то есть вам не нужно вызывать их как явные члены класса, как показано в примерах. Дополнительные методы и в некоторых случаях дополняют методы, доступны в System.String классе.

Строковые операторы

Вы уже видели операторы + и * в применении их к числовым значениям в уроке по операторам в Python . Эти два оператора применяются и к строкам.

Оператор сложения строк +

Строковые операторы

+ — оператор конкатенации строк. Он возвращает строку, состоящую из других строк, как показано здесь:

>>> s = ‘py’ >>> t = ‘th’ >>> u = ‘on’ >>> s + t ‘pyth’ >>> s + t + u ‘python’ >>> print(‘Привет, ‘ + ‘Мир!’) Go team!!!

Оператор умножения строк *

Строковые операторы

* — оператор создает несколько копий строки. Если s это строка, а n целое число, любое из следующих выражений возвращает строку, состоящую из n объединенных копий s:

s * n n * s

Вот примеры умножения строк:

Строковые операторы

>>> s = ‘py.’ >>> s * 4 » >>> 4 * s »

Значение множителя n должно быть целым положительным числом. Оно может быть нулем или отрицательным, но этом случае результатом будет пустая строка:

>>> ‘py’ * 6 »

Строковые операторы

Если вы создадите строковую переменную и превратите ее в пустую строку, с помощью ‘py’ * -6, кто-нибудь будет справедливо считать вас немного глупым. Но это сработает.

Оператор принадлежности подстроки in

Строковые операторы

Python также предоставляет оператор принадлежности, который можно использоваться для манипуляций со строками. Оператор in возвращает True, если подстрока входит в строку, и False, если нет:

>>> s = ‘Python’ >>> s in ‘I love Python.’ True >>> s in ‘I love Java.’ False

Есть также оператор not in, у которого обратная логика:

Строковые операторы

>>> ‘z’ not in ‘abc’ True >>> ‘z’ not in ‘xyz’ False

Процедуры и функции для работы со строками Паскаль:

1)  length(st:string):integer;

  • функция, возвращающая значение текущей длины строки.

Пример:

2)  concat(st1,[st2,…,stn]:string):string;

  • функция, выполняющая слияние строк-параметров, число которых может быть произвольно. Каждый из параметров представляет собой выражение строкового типа. Может возникнуть ситуация, когда длина результирующей строки превысит 255 символов. В этом случае эта строка укорачивается до 255 символов. Функция concat эквивалентна операции конкатенации, однако работать чуть менее эффективно по сравнению с операцией конкатенации «+».
Читайте также:  42 команды Linux которые вы должны знать

3)  copy(st:string; ind:integer; col:integer):string;

  • функция, возвращающая подстроку (имеет длину col символов), которая выделяется из исходной первой строки st , начиная с символа с номером ind.

Пример:

4) delete(var st:string; ind,col:integer);

  • процедура, удаляющая из строки-параметра st подстроку (имеет длину col символов), начиная с определенного под номером ind символа.

Пример:

5)  insert (st2:string; var st:string;ind:integer);

  • процедура, вставляющая строку st2 в строку st, начиная с определенного под номером ind символа строки st.

Пример:

6)  pos(podsr,st:string):byte;

  • функция, осуществляющая поиск подстроки podst в строке st. В результате выполнения этой функции выделяется номер 1-й позиции подстроки в первоначальной строке. Если подстрока отсутствует, то функция возвращает значение 0.

Пример:

7)  str(y: арифметическое выражение; var strk: string);

  • процедура, преобразующая численное представление y в строковое и помещающая результат работы в строку strk.

8)  val(strk: string; y: числовая переменная; var kod: integer);

  • процедура, преобразующая строковую запись числа, которая содержится в строке strk, в число, помещая результат в переменную y. y может оказаться как действительной, так и целой переменной. В случае, когда в strk встретится недопустимый символ (принимая во внимание правила записи числа) символ, то не происходит преобразования, а в kod при этом фиксируется позиция 1-го недопустимого символа. В результате этого процесс выполнения программы не приостанавливается, диагностика не выдается. Если в результате процедуры kod примет значение 0, это говорит об отличном прошедшем преобразовании.

9)  chr(m: byte): char;

  • функция, возвращающая символ по коду, который равен значению выражения m. Если m представима в качестве числовой константы, то пользуются также записью #m.

10) ord(m: char): byte;

  • функция, возвращающая код символа m.

11)  UpCase(sym: char): char;

  • функция, обеспечивающая возвращение соответствующей прописной латинской буквы (если sym является строчной латинской буквой), иначе происходит возвращение символа sym без изменения.

Похожие записи:

  • Pascal. Ввод-вывод вещественных чисел.
  • Циклы в Паскале
  • Установка Free Pascal
  • Pascal. Одномерные массивы
  • Процедуры и функции при работе с файлами Паскаль
Читайте также:  Способы добавления смайликов с iPhone на Android

Концепции

Перед тем, как идти дальше, мы считаем важным акцентировать внимание на том, что делает «sed», так как словосочетание «потоковый редактор» мало что говорит о его назначении. sed принимает на входе текст, выполняет заданные операции над каждой строкой (если не задано другое) и выводит модифицированный текст. Указанными операциями могут быть добавление, вставка, удаление или замена. Это не так просто, как выглядит: предупреждаю, что имеется большое количество опций и их комбинаций, которые могут сделать команду sed очень трудной для понимания. Поэтому мы рекомендуем вам изучить основы регулярных выражений, чтобы понимать, как это работает. Перед тем, как приступить к руководству, мы хотели бы поблагодарить Eric Pement и других за вдохновление и за то, что он сделал для всех, кто хочет изучать и использовать sed.

Работа с внешними программами при написании shell-скриптов

Для начала немного полезной теории.

Перенаправление потоков.

В bash(как и многих других оболочках) есть встроенные файловые дескрипторы: 0 (stdin), 1 (stdout), 2 (stderr). stdout — Стандартный вывод. Сюда попадает все что выводят программы stdin — Стандартный ввод. Это все что набирает юзер в консоли stderr — Стандартный вывод ошибок. Для операций с этими дескрипторами, существуют специальные символы: > (перенаправление вывода), < (перенаправление ввода). Оперировать ими не сложно. Например: cat /dev/random > /dev/null перенаправить вывод команды cat /dev/random в /dev/null (абсолютно бесполезная операция :)) ) или ls -la > listing записать в файл listing содержание текущего каталога (уже полезней) Если есть необходимость дописывать в файл(при использовании ">" он заменятеся), необходимо вместо ">" использовать "»" sudo < my_password после просьбы sudo ввести пароль, он возьмется из файла my_password, как будто вы его ввели с клавиатуры. Если необходимо записать в файл только ошибки, которые могли возникнуть при работе программы, то можно использовать: ./program_with_error 2> error_file цифра 2 перед ">" означает что нужно перенаправлять все что попадет в дескриптор 2(stderr). Если необходимо заставить stderr писать в stdout, то это можно можно след. образом: ./program_with_error 2>&1 символ "&" означает указатель на дескриптор 1(stdout) (Поумолчанию stderr пишет на ту консоль, в котрой работает пользователь(вренее пишет на дисплей)).

Конвеер — очень мощный инструмент для работы с консолью Bash. Синтаксис простой: команда1 | команда 2 — означает, что вывод команды 1 передастся на ввод команде 2 Конвееры можно группировать в цепочки и выводить с помощью перенаправления в файл, например: ls -la | grep «hash» |sort > sortilg_list вывод команды ls -la передается команде grep, которая отбирает все строки, в которых встретится слово hash, и передает команде сортировке sort, которая пишет результат в файл sorting_list. Все довольно понятно и просто.

Чаще всего скрипты на Bash используются в качестве автоматизации каких-то рутинных операций в консоли, отсюда иногда возникает необходимость в обработке stdout одной команды и передача на stdin другой команде, при этом результат выполнения одной команды должен быть неким образом обработан. В этом разделе я постораюсь объяснить основные принципы работы с внешними командами внутри скрипта. Думаю что примеров я привел достаточно и можно теперь писать только основные моменты.

1. Передача вывода в переменную.

Для того чтобы записать в переменную вывод какой-либо команды, достаточно заключить команду в « ковычки, например

a = `echo "qwerty"` echo $a

Результат работы: qwerty

Однако если вы захотите записать в переменную список директорий, то необходимо, должным образом обработать результат для помещения данных в переменную. Рассмотрим небольшой, пример:

LIST=`find /svn/ -type d 2>/dev/null| awk '{FS="/"} {print $4}'| sort|uniq | tr '\n' ' '` for ONE_OF_LIST in $LIST do svnadmin hotcopy /svn/$ONE_OF_LIST /svn/temp4backup/$ONE_OF_LIST done

Здесь мы используем цикл for-do-done для архивирование всех директорий в папке /svn/ с помощью команды svnadmin hotcopy(что в нашем случае не имеет никого значения, просто как пример). Наибольшй интерес вызывает строка:

LIST=`find /svn/ -type d 2>/dev/null| awk '{FS="/"} {print $4}'| sort|uniq | tr '\n' ' '`

В ней переменной LIST присваивается выполнение команды find, обработанной командами awk, sort, uniq,tr(все эти команды мы рассматривать не будем, ибо это отдельная статья). В переменной LIST будут имена всех каталогов в папке /svn/ пгомещенных в одну строку(для того чтобы её стравить циклу.

Как видно, все не сложно, достаточно понять принцип и написать пару своих скриптов. В заключении статьи хочу пожелать удачи в изучении BASH и Linux в целом. Критика, как водится приветствуется. Следующая статья возможно будет посвещена использованию таких программ как sed, awk.

Основы BASH. Часть 1