Работа с текстом python: Python. Работа с текстом. Строки.

Python. Работа с текстом. Строки.

На уроке «Python. Взлом шифров. продолжение-2» я обещал рассказать о работе с текстом. Начнем со строк. Строки в Python-е, как и в PHP и JavaScript, могут заключаться в двойные или одинарные кавычки:

s1="Это строка"
s2='Это тоже строка'

print (s1)
print (s2)

Это позволяет создать строки с кавычками внутри (либо с апострофами внутри):

s1="Внутри кавычек могут быть 'апостофы' ''''"
s2='А внутри апостофов "кавычки"   """ '

print (s1)
print (s2)

Еще есть такая фича, как тройные кавычки. Они позволят задать многострочный стринг:

s="""Это первая строка
а это вторая
и третья
и четвертая"""

print (s)

Другой способ задания многострочного текста — это использование символов «\n», хотя первый способ зачастую более наглядный. Вот этот код выполнит тоже самое:

s="Это первая строка\nа это вторая\nи третья\nи четверая"
print (s)

Строки можно складывать (конкатенация):

s="Hello "+"word"

print (s)

Можно умножить строку на число, в этом случае она дублируется столько раз, на сколько ее умножили:

s="Hello "*3
print (s)

Но при попытке умножить на дробное число выйдет ошибка:

«Traceback (most recent call last):
File «D:/Самообразование/Python работа с тектом/text6. py», line 3, in <module>
s=»Hello «*3.1
TypeError: can’t multiply sequence by non-int of type ‘float’»

Аналогично не «прокатит» и умножение строки на строку, так как данная операция не имеет смысла.

Кстати, при умножении строки на число от перестановки множителей произведение не меняется:

s=3*"Hello "
print (s)

Такой код выдаст тоже самое, что и предыдущий. А вот со сложением данный номер не пройдет, так как там просто  вторая строка с конца присоединяется к перовой.

К символам строки можно обращаться как к элементам массива, счет при этом начинается с нуля. Например, вот такой код вернет запятую:

s="Hello, world! "
print (s[5])

Можно использовать срез. Например, вот такая программа вернет «lo,»:

s="Hello, world! "
print (s[3:7])

Самый прикол, что можно получить каждый второй, каждый третьи и так далее символ из среза, например, каждый второй:

s="Hello, world! "
print (s[1:10:2])

Такая программа вернет строку: «el,wr», а вот такая:

s="Hello, world! "
print (s[1:10:3])

Вернет: «eow».

А еще в срезе могут быть отрицательные значения, это значит, что брать надо с конца. Например, если мы хотим получить предпоследний символ, мы можем написать [-2]. А вот если обратиться так: [:-2] то программа вернет все символы, кроме последних двух.

Теперь пара практических задач.

Задача 1. Дана строка со списком слов, разделенных пробелами. Надо найти самое длинной слово.

Решение. Вспомним урок Python. Взлом шифров. Продолжение, где для распарсиваняи строки мы использовали split. Тут поступим точно так же, распарсим строку, превратив ее в список, переберем все элементы списка, используя классический алгоритм поиска максимума:

s="а на к в игра слово параллелепипед велосипед в не у компьютер"
ls=s.split(" ")
max_len=0
word=""
for el in ls:
    word_len=len(el)
    if word_len>max_len:
        max_len=word_len
        word=el

print("Слово с максимальной длиной: "+word)


Программа вернет «Слово с максимальной длиной: параллелепипед».

Задача 2. Необходимо анализировать сигнал. Этот сигнал состоит из цифр от 0 до 9 и знака #. Две и более идущие цифры подряд обозначают эту цифру. Если цифра должна повторяться, то это обозначается двумя или более знаками # (предыдущая цифра повторяется). Одинарная цифра или знак # считается помехой и не должен учитывается. Например, сочетание «12233##577766###» обозначает «233766».

Решение. Будем анализировать строку сигнала в цикле, меняя режим цикла, если идут два и более символа подряд. Последний символ и последнюю цифру запоминаем. Символ запоминаем чтобы отследить, что иду два и более подряд, а цифру для того, чтобы знак «#» удвоил ее.

Вот такая получается программа:

source_str="12233##577766###"
last_digit=""
last_simbol=""
dist_str=""
str_len=len(source_str)
i=0
is_wait=True
while i<str_len:
    simb=source_str[i]
    if simb==last_simbol:
        if not is_wait:
            if simb=="#":
                dist_str=dist_str+last_digit
            else:
                dist_str=dist_str+simb
                last_digit=simb
            is_wait=True
    else:
        is_wait=False
        last_simbol=simb
    i=i+1

print(dist_str)

 

Работа со строками в Python OTUS

Язык программирования Python поддерживает разные виды данных. В этой статье, предназначенной для начинающих, будет рассмотрен строковый тип string и основные операции, связанные с обработкой строк. Среди них:

  • создание строк;
  • конкатенация строк;
  • выборка символов по индексам.

Создание строки

Строки (strings) используются для хранения текстовых данных. Их создание возможно одним из 3-х способов. Тут все просто, т. к. возможно применение разных кавычек: одинарных, двойных либо тройных. То есть в эти кавычки и нужно обернуть текст:

otus_string_1 = 'Привет, друзья!'

otus_string_2 = "Хотите выучить Python?"

otus_string_3 = """Ждем вас на наших курсах!"""

Кавычки в данном случае — это строковые литералы, позволяющие создавать в памяти программы Python объект типа string.

Нужно понимать, что разницы, какие именно кавычки использует разработчик, нет. Главное — открывающие и закрывающие кавычки должны быть однотипными. Если же поставить вначале одинарную кавычку, а в конце двойную — ошибки не избежать.

Можно ли применять кавычки внутри строк?

Можно, для чего есть несколько вариантов. Один из них — использовать внутри строки кавычки другого типа. К примеру, наружные кавычки являются двойными, а внутренние — одинарными. Или наоборот:

otus_string_1 = 'Хотите выучить "Пайтон?" и стать профессионалом'

otus_string_2 = "Запишитесь на курс в 'Отус' уже сегодня!"

Второй метод — экранирование. Для экранирования используется обратный слэш. Вот, как это выглядит в коде:

otus_string_1 = "Я и \'Пайтон\' созданы друг для друга"

У тройных кавычек есть особенности. Заключенные в них строки поддерживают многострочность, то есть для переноса не нужен символ \n. А еще внутри тройных кавычек можно вставлять как двойные, так и одинарные кавычки:

my_string = """Учитесь

программированию

в "Отус"!"""

print (my_string)

Вывод будет следующим:

Строки являются неизменяемыми объектами (как и числа). В этом легко убедиться, если создать переменные с одинаковыми именами, а потом вывести на экран их id — идентификаторы будут различаться:

otus_string = 'Привет, друзья!'

print(id(otus_string))

otus_string = "Хотите выучить Python?"

print(id(otus_string))

Рекомендуется повторить вышеописанные операции самостоятельно и попрактиковаться. Сделать это можно, даже не устанавливая «Пайтон», используя любой онлайн-компилятор.  

Конкатенация строк

Конкатенация — это сложение строк, в результате чего они соединяются друг с другом. Самый простой способ сделать это — использовать простейший оператор сложения, то есть знак «+».

Это простейший синтаксис, причем можно брать сколько угодно строк и соединять их:

otus_string = "Я " + "просто " + "обожаю " + "Python!"

print(otus_string)

Если надо, можно задействовать и операнд умножения. Он позволит продублировать строку, умножив ее на соответствующее значение, которое разработчик передаст в коде.  

otus_string = "Code" * 10

print(otus_string)

Важное свойство строк — длина (число символов). Узнать количество символов, из которых состоит строка, можно, задействовав встроенную функцию len (от англ. length — длина).

Код ниже посчитает число символов:

otus_string = "Python is a good for coding"

print(len(otus_string))

Итого: строка содержит 27 символов (пробел — тоже символ):

Можно попробовать передать пустую строку и постараться посчитать число символов в ней. Если вставить хотя бы пробел, на выходе получится 1 символ, если не вставлять вообще ничего, число символов будет равняться нулю.

otus_string_1 = ""

print(len(otus_string_1))

otus_string_2 = " "

print(len(otus_string_2))

Несколько слов о методах строк

Ранее уже использовались такие методы, как print и id. Есть свои методы и у строковых данных — они принадлежат конкретному классу str. Чтобы вывести их, можно воспользоваться функцией dir:

Зубрить каждый из них нет необходимости, так как нужные методы будут запоминаться с практикой. Чтобы обратиться к одному из них, следует сначала обратиться к соответствующему объекту, потом поставить точку, потом написать нужный метод и круглые скобки. Лучше это увидеть:

string_1 = "oTUs"

string_1 = string_1.title()

print(string_1)

string_1 = string_1.upper()

print(string_1)

string_1 = string_1.lower()

print(string_1)

Что отображено на скриншоте выше:

  • была создана новая строка string_1 с содержимым “oTUs”;
  • вначале задействовали метод title — вывод слова получился с заглавной буквы;
  • потом использовали метод для верхнего регистра upper — заглавными (прописными)  стали все символы строки;
  • далее применили lower — все символы стали маленькими (строчными), то есть перешли в нижний регистр.  

Какие еще есть методы:

  • replace —для замены одной части исходной строки (подстроки) на другую;
  • split — позволяет разделить (не удалить!) строку по переданному делителю, возвращает список;
  • join — склеивает подстроки по конкретному разделителю;
  • strip. В языке программирования Python strip используется для обрезки ненужных символов, причем ненужный символ передается в виде аргумента. Обрезку можно выполнять по-разному: если с первого символа слева, то применяют не strip, а lstrip, если справа, то rstrip (с конца строки, если интересует последний символ).

Индексы

В «Питоне» у каждого символа есть свой номер — индекс. Если разработчика интересует поиск какого-нибудь символа, к нему можно обратиться. Код ниже возвращает индекс для каждого символа из слова Otus:

string_1 = "Otus"

print(string_1[0])

print(string_1[1])

print(string_1[2])

print(string_1[3])

Тут важен один момент: индексация начинается не с единицы, а с нуля, поэтому первый символ имеет индекс 0.

Дополнительно: преобразование символа в целое число

Компьютеры хранят все данные в виде цифр, и символьных данных это тоже касается. Для представления символов строкового типа String применяют схему перевода. Самая простая из них — ASCII. Если нужно вернуть число для какого-нибудь конкретного символа, используют функцию ord. К примеру, для символа «a» кодовое значение по ASCII будет равняться 97, а для «#» — 35.

Кроме ASCII, также широко известен  Unicode, который тоже поддерживается «Питоном».

Источники:

  • https://zen.yandex.ru/media/id/5cab3ea044061700afead675/vse-o-strokah-v-python-5f60744e5622142b93b2031e;
  • https://pythonru.com/osnovy/stroki-python.

Работа с текстовыми файлами в Python

Этот урок является частью серии из 15 уроков — Вы находитесь на уроке 3 | предыдущий урок | следующий урок

Содержание

  • Цели урока
  • Работа с текстовыми файлами
  • Создание и запись в текстовый файл
    • Чтение из текстового файла
    • Добавление к уже существующему текстовому файлу
  • Рекомендуемая литература

Цели урока

В этом уроке вы узнаете, как работать с текстовыми файлами с помощью Python. Это включает в себя открытие, закрытие, чтение и запись в

.txt файлы с помощью программирования.

Следующие несколько уроков этой серии будут включать в себя загрузку веб-страницы с Интернет и реорганизации содержимого в полезные фрагменты информация. Вы будете выполнять большую часть своей работы, используя код Python. написано и выполнено в Komodo Edit.

Работа с текстовыми файлами

Python упрощает работу с файлами и текстом. Давайте начнем с файлы.

Создание и запись в текстовый файл

Начнем с краткого обсуждения терминологии. На предыдущем уроке (в зависимости от вашей операционной системы: установка Mac, Windows установки или установки Linux), вы видели, как отправить информацию в окно «Command Output» вашего текстового редактора с помощью Команда печати Python.

 печать («привет, мир»)
 

Язык программирования Python — объектно-ориентированный . То есть, что он построен вокруг объекта особого типа, объекта , который содержит как данные , так и ряд методов для доступа и изменения эти данные.

После создания объекта он может взаимодействовать с другими объекты.

В приведенном выше примере мы видим один тип объекта, строку «hello мир». Строка представляет собой последовательность символов, заключенную в кавычки. Ты может написать строку одним из трех способов:

 сообщение1 = 'привет, мир'
message2 = "привет, мир"
сообщение3 = """привет
привет
Привет, мир"""
 

Важно отметить, что в первых двух примерах вы можете используйте одинарные или двойные кавычки/кавычки, но нельзя смешивать два в одной строке.

Например, следующее неверно:

 message1 = "hello world"
message2 = "привет, мир"
message3 = 'Я не могу есть огурцы'
 

Подсчитать количество одинарных кавычек в сообщении3. Для этого вы работаете пришлось бы escape апостроф:

 message3 = 'Я не могу есть соленые огурцы'
 

Или перепишите фразу как:

 message3 = "Я не могу есть соленые огурцы"
 

В третьем примере тройные кавычки обозначают строку, охватывающую более одной строки.

Печать — это команда, которая печатает объекты в текстовом виде. Печать Команда в сочетании со строкой создает оператор .

Вы будете использовать печать в тех случаях, когда вы хотите создать информацию, на которую нужно немедленно реагировать. Иногда, однако, вы будете создавать информацию, которую хотите сохранить, отправить кем-то другим или использовать в качестве входных данных для дальнейшей обработки другим программа или набор программ. В этих случаях вы захотите отправить информацию в файлы на жестком диске, а не в «Командную Панель «Вывод». Введите следующую программу в текстовый редактор и сохраните это как

файл-выход.py .

 # файл-выход.py
f = открыть('helloworld.txt','w')
f.write('привет, мир')
е.закрыть()
 

В Python любая строка, начинающаяся с решётки (#), называется комментарий и игнорируется интерпретатором Python. Комментарии предназначены чтобы позволить программистам общаться друг с другом (или напоминать сами понимают, что делает их код, когда они немного поработают над ним. месяцы спустя). В более широком смысле сами программы обычно написаны и отформатированы таким образом, чтобы программистам было легче общаться друг с другом. Код, который ближе к требованиям машина называется низкоуровневый , тогда как код, который ближе к естественный язык высокого уровня . Одно из преимуществ использования языка как Python, заключается в том, что он очень высокого уровня, что облегчает нам общаться с вами (за счет некоторых затрат с точки зрения вычислительной эффективность).

В этой программе f — это файловый объект , а открыть , записать и закрыть — это файл методы . Другими словами, открыть, написать и закрыть сделать что-то с объект f , который в данном случае определяется как файл .txt . это скорее всего иное использование термина «метод», чем вы могли бы ожидать, и со временем со временем вы обнаружите, что слова, используемые в контексте программирования, имеют несколько (или полностью) иное значение, чем в повседневном речь. В этом случае вспомните, что методы — это фрагменты кода, выполняющие действия. Они делают что-то с чем-то другим и возвращают результат. Ты можно попытаться подумать об этом, используя пример из реального мира, такой как отдача команд к семейной собаке. Собака (объект) понимает команды (т. «методы»), такие как «лаять», «сидеть», «притворяться мертвыми» и так далее. Мы будем обсудить и узнать, как использовать многие другие методы, как мы продвигаемся вперед.

f — выбранное нами имя переменной; Вы могли бы назвать это примерно все, что ты любишь. В Python имена переменных могут быть составлены из верхнего и нижнего регистров. строчные буквы, цифры и символы подчеркивания… но вы не можете использовать имена команд Python в качестве переменных. Если вы попытались назвать свою файловую переменную например, «печатать», ваша программа не будет работать, потому что это зарезервированное слово, которое является частью языка программирования.

Имена переменных Python также чувствительны к регистру , что означает, что foobar, Foobar и FOOBAR будут разными переменными.

Когда вы запускаете эту программу, метод open сообщит вашему компьютеру, что создайте новый текстовый файл helloworld.txt в той же папке, что и у вас сохранил программу file-output.py . Параметр w говорит о том, что вы намерены для записи содержимого в этот новый файл с помощью Python.

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

На следующей строке ваша программа записывает сообщение «hello world» (другое string) в файл, а затем закрывает его. (Для получения дополнительной информации о эти операторы см. в разделе о файловых объектах в Python. Справочник по библиотеке.)

Дважды щелкните кнопку «Запустить Python» в Komodo Edit, чтобы выполнить программе (или ее эквиваленте в любом текстовом редакторе, который вы решили использование: например, нажмите на «#!» и «Выполнить» в TextWrangler). Хотя ничего будут напечатаны на панели «Вывод команды», вы увидите статус сообщение, которое говорит что-то вроде

 `/usr/bin/python file-output.py` вернул 0.
 

в Mac или Linux или

 'C:\Python27\Python.exe file-output.py' вернул 0.
 

в Windows.

Это означает, что ваша программа выполнена успешно. Если вы используете Файл -> Открыть -> Файл в Komodo Edit, вы можете открыть файл helloworld.txt . Он должен содержать однострочное сообщение:

 Hello World!
 

Поскольку текстовые файлы содержат минимальное количество информации о форматировании, они, как правило, маленькие, их легко обменивать между разными платформами (т. е. с Windows на Linux или Mac или наоборот) и легко отправить от одной компьютерной программы к другой. Обычно они также могут быть прочитаны люди, использующие текстовый редактор, такой как Komodo Edit.

Чтение из текстового файла

Python также имеет методы, позволяющие получать информацию из файлов. Введите следующую программу в текстовый редактор и сохраните ее как файл-ввод.py . Когда вы нажмете «Выполнить», чтобы выполнить его, он откроет текстовый файл, который вы только что создали, прочитайте из него однострочное сообщение и распечатайте сообщение на панели «Вывод команды».

 # файл-input.py
f = открыть('helloworld.txt','r')
сообщение = f.read()
распечатать (сообщение)
е.закрыть()
 

В этом случае параметр r используется для указания того, что вы открываете файл на читать из него . Параметры позволяют выбирать среди различных параметры, которые позволяет конкретный метод. Возвращаясь к примеру с семейной собакой, собаку можно научить лаять один раз, когда она получает закуску со вкусом говядины. и дважды, когда он получает со вкусом курицы. Вкус закуски является параметром. Каждый метод отличается тем, какие параметры он приму. Вы не можете, например, попросить собаку спеть итальянскую опера — если только ваша собака не особенно талантлива. Вы можете посмотреть возможные параметры для конкретного метода на веб-сайте Python или часто их можно найти, набрав метод в поисковике вместе с «Питоном».

Чтение — еще один файловый метод. Содержимое файла (однострочный message) копируются в message , которое мы решили назвать эту строку, а затем команда print используется для отправки содержимого сообщение на панель «Вывод команды».

Добавление к уже существующему текстовому файлу

Третий вариант — открыть уже существующий файл и добавить к нему дополнительные элементы. Примечание что если вы откроете файл и используете напишите метод , программа будет перезаписать все, что могло содержаться в файле . Это не проблема, когда вы создаете новый файл или когда хотите перезаписать содержимое существующего файла, но это может быть нежелательно, когда вы ведут журнал событий или собирают большой набор данных в один файл. Итак, вместо напишите , вы захотите использовать метод append , обозначенный a .

Введите следующую программу в текстовый редактор и сохраните ее как файл-append.py . Когда вы запустите эту программу, она откроет тот же файл helloworld.txt , созданный ранее, и добавьте второй «hello world» в файл. «\n» означает новую строку.

 # файл-append.py
f = открыть('helloworld.txt','а')
f.write('\n' + 'привет, мир')
е.закрыть()
 

После запуска программы откройте файл helloworld.txt и посмотрите что случилось. Закройте текстовый файл и перезапустите file-append.py несколько раз. больше раз. Когда вы открываете helloworld.txt снова вы должны заметить несколько дополнительные сообщения «привет мир» ждут вас.

В следующем разделе мы обсудим модульность и повторное использование кода.

Рекомендуемая литература

  • Учебник для непрограммистов по Python 2.6/Hello, World

Урок 12: Python и текстовые файлы

Посмотрите видео выше.

В  Уроке 22 я расскажу об использовании и применении текстовых файлов в ваших цифровых гуманитарных проектах. А пока я хочу просто заявить, что текстовые файлы являются важными компонентами любого цифрового гуманитарного проекта. Вы будете использовать их в своих проектах и ​​столкнетесь с ними в проектах других. Понимание того, как вызывать текстовые файлы в Python, читать их, взаимодействовать с ними, писать в них и извлекать из них данные, очень важно. Поскольку я собираюсь работать с текстовыми файлами в оставшейся части этой серии, я говорю о них в начале этого курса.

Итак, что такое текстовый файл? Текстовый файл   – это файл с расширением .txt. В проектах DH мы часто используем текстовые файлы для хранения данных, разделенных строкой, таких как списки, или полные тексты, такие как письмо, стихотворение или книга. Если вы разделяете элементы в строке запятыми или каким-либо другим символом, вы можете работать с текстовыми файлами как с файлами csv или со значениями, разделенными запятыми. Подробнее об этом читайте в Уроке 22. Здесь мы просто будем работать с текстовыми файлами как со строками.

В Python мы можем создавать новые текстовые файлы, а также читать и записывать в существующие. Начнем с создания текстового файла. Для этого мы будем использовать то, что известно как оператор. Операторы позволяют нам выполнять ряд задач, которые затем завершаются, как только мы покидаем оператора. В этом случае мы будем использовать с оператором . Это Pythonic способ открыть текстовый файл. В устаревших видеоуроках и коде вы увидите, что это делается немного по-другому, используя функции открытия и закрытия. Причина, по которой мы используем оператор with, заключается в том, что вам не нужно вручную закрывать текстовый файл после его открытия. Это важно, потому что если вы забудете закрыть файл в сценарии Python, он останется открытым в памяти. Если вы работаете с циклами, это может быстро дорого обойтись.

Давайте посмотрим на скрипт выше. Начнем с создания объекта, файла, в строке 1. Этот файл представляет собой строку. Это не файл. Однако это строка корня текстового файла. Если бы у нас была папка в нашем каталоге, мы бы направили ее в эту папку, используя следующий файл /имя_папки/текст.txt. Обратите также внимание на то, что рядом с main.py нет файла text.txt.

В строке 3 мы вызываем оператор with. Мы говорим с open, чтобы открыть файл. Внутри функции open мы передаем два аргумента. Первый — это имя файла, который является объектным файлом. Второй аргумент — «а+». Это называется дескриптор файла . Об этом я буду говорить ниже. А пока поймите, что + позволяет нам добавить файл и создать его, если он не существует. Наконец, в третьей строке мы указываем Python открыть файл как f. Это создает открытый файл как объект с именем f. Это питоновский способ сделать это. Иногда вы увидите, что он открывается как fp.

В строке 4 мы вызываем функцию записи, которую выполняем над объектом f. Мы заявляем, что хотим написать строку «Hello».

Как только мы это сделаем, файл будет создан. Но что, если бы мы захотели это прочитать? Здесь начинается строка 6. В строке 6 мы снова открываем тот же файл, но на этот раз нашим вторым аргументом является «r». Это позволяет нам читать данные. Внутри оператора with в строке 7 мы создаем цикл for. Функция readlines() возвращает список строк. Итак, цикл for будет перебирать все строки в списке. В этом цикле for в строке 8 мы просто печатаем каждую строку.

Запустите приведенный выше скрипт и немного поэкспериментируйте с ним. Попробуйте некоторые из строковых функций, которые вы изучили в Уроке 03. Если вам нужен справочник по общим строковым функциям, ознакомьтесь с моим справочным руководством по строковым функциям Python. Создайте новые текстовые файлы. Они останутся на странице, пока вы ее не обновите.

Существует несколько различных файловых дескрипторов, которые вы должны запомнить.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *