|
|
Ответов: 0
|
25-02-12 07:01
|
|
|
|
Ответов: 0
|
16-01-12 20:13
|
|
|
|
Ответов: 1
|
09-01-12 11:23
|
|
   Web - программирование
|
|
|
   Программирование под ОС
|
|
|
   Web - технологии
|
|
|
   Базы Данных
|
|
|
|
Web - программирование / Python /
| |
| | |
Возможно вас заинтересует
|
|
Текстовая обработка в языке Python. Подсказки для начинающих
Как и ряд других популярных скриптовых языков, Python является великолепным инструментом для сканирования и манипуляций с текстовыми данными. Эта статья суммирует возможности текстовой обработки языка Python для тех программистов, которые являются новичками в программировании на языке Python. Эта статья объясняет некоторые основные понятия регулярных выражений и предлагает советы, когда стоит (а когда - не стоит) использовать регулярные выражения при обработке текста.
Что такое Python?
Python - это свободно доступный, интерпретируемый язык очень высокого уровня, разработанный Гвидо ван Россумом. Он объединяет ясный синтаксис с мощной (но необязательной) объектно-ориентированной семантикой. Python широко распространен и высокопортабелен.
Строки - неизменяемые последовательности
Как и в большинстве высокоуровневых языков программирования, строки переменной длины являются базовым типом в языке Python. Python выделяет область памяти для хранения строк (или других значений) "за кулисами", там, где программисту не нужно особенно задумываться об этом. Кроме того, Python имеет несколько возможностей управления строками, отсутствующих в других высокоуровневых языках.
В языке Python строки представляют собой "неизменяемые последовательности" ("immutable sequences"). Программа может обращаться к элементам или подпоследовательностям строк как к любым последовательностям, несмотря на то, что строки, как и кортежи (tuples), не могут быть изменены непосредственно "на месте". Python обращается к подпоследовательностям с помощью гибкой операции "среза", формат которой напоминает задание диапазона строк и столбцов в электронной таблице. Приведенная ниже интерактивная сессия иллюстрирует использование строк и срезов.
>>> s = "mary has a little lamb"
>>> s[0] # индекс с отсчетом от нуля
'm'
>>> s[3] = 'x' # непосредственное изменение элемента не удается
Traceback (innermost last):
File "<stdin>", line
1, in
?
TypeError: object doesn't support item assignment
>>> s[11:18] # 'вырезать' подпоследовательность
'little '
>>> s[:4] # пустое начало среза предполагает нуль
'mary'
>>> s[4] # индекс 4 не включен в срез [:4]
' '
>>> s[5:-5] # может использоваться индекс "с конца" с отрицательными числами
'had a little'
>>> s[:5]+s[5:] # соединение начала и конца среза
'mary had a little lamb'
|
|
Другая мощная строковая операция - просто ключевое слово in. Оно предлагает две интуитивные и полезные конструкции:
>>> s = "mary had a little lamb"
>>> for c in s[11:18]: print c, # печать каждого символа в срезе
...
l i t t l e
>>> if 'x' in s: print 'got x' # проверка на вхождение символа
...
>>> if 'y' in s: print 'got y' # проверка на вхождение символа
...
got y
|
|
Есть несколько способов написания строковых констант в языке Python. Вы можете использовать как одинарные, так и двойные кавычки при условии, пока символы открытия и закрытия соответствуют друг другу, и существует ряд других полезных вариантов. Если ваша строка содержит переводы строки или вложенные кавычки, тройные кавычки предоставляют удобный способ такого рода строк, как это сделано в следующем примере:
>>> s2 = """Mary had a little lamb
... its fleece was white as snow
... and everywhere that Mary went
... the lamb was sure to go"""
>>> print s2
Mary had a little lamb
its fleece was white as snow
and everywhere that Mary went
the lamb was sure to go
|
|
Как одинарные, так и тройные кавычки могут предваряться буквой "r" для обозначения того, что специальные символы регулярных выражений не должны интерпретироваться Python. Например:
>>> s3 = "this \n and \n that"
>>> print s3
this
and
that
>>> s4 = r"this \n and \n that"
>>> print s4
this \n and \n that
|
|
В "r-строках" обратный слэш, который в иных случаях может служить для задания специального символа, обрабатывается как обычный обратный слэш. Это объясняется далее при рассмотрении регулярных выражений.
Файлы и строковые переменные
Когда мы говорим "текстовая обработка", мы обычно подразумеваем обработку содержимого файла. На языке Python не составляет труда считать содержимое текстового файла в строковые переменные, где этим содержимым можно манипулировать. Файловые объекты обеспечивают три метода чтения: .read(), .readline(), and .readlines(). Каждый из этих методов может принимать аргумент для ограничения объема данных, считываемых за один раз, однако в основном они используются без аргумента. .read() считывает весь файл за один раз, и обычно используется для помещения содержимого файла в строковую переменную. Хотя .read() дает наиболее прямое строковое представление содержимого файла, он неудобен для последовательной строчно-ориентированной обработки файла, к тому же это невозможно, если размер файла превышает объем имеющейся памяти.
.readline() и .readlines() очень похожи. И та и другая используются в конструкциях наподобие следующей:
fh = open('c:\autoexec.bat')
for line in fh.readlines():
print line
|
|
Различие между .readline() и .readlines() в том, что последняя, как и .read(), считывает весь файл за один раз. .readlines() автоматически парсит содержимое файла в список строк, который может быть обработан с помощью конструкции языка Python for ... in ....
С другой стороны, .readline() считывает только одну строку за раз, и в целом работает гораздо медленнее, чем .readlines(). .readline() следует использовать, только если памяти не хватает для считывания всего файла за один раз.
Если вы используете стандартный модуль, работающий с файлами, вы можете превратить строку в "виртуальный файл" с помощью модуля cStringIO (если требуется создание производных классов, можно использовать StringIO, но начинающим это требуется редко).
Например:
>>> import cStringIO
>>> fh = cStringIO.StringIO()
>>> fh.write("mary had a little lamb")
>>> fh.getvalue()
'mary had a little lamb'
>>> fh.seek(5)
>>> fh.write('ATE')
>>> fh.getvalue()
'mary ATE a little lamb'
|
|
Не забывайте, однако, что, в отличие от настоящего файла, "виртуальный файл", сформированный cStringIO - временный. Он исчезнет, когда программа завершится, если вы не предпримете каких-либо шагов, чтобы его сохранить (например, запишете его в реальный файл или воспользуетесь модулем shelve либо базой данных).
Стандартный модуль: string
Модуль string, возможно, в целом наиболее полезный модуль стандартных дистрибутивов языка Python 1.5.*. На самом деле похоже, что многие из возможностей модуля string будут существовать в качестве встроенных строковых методов в Python 1.6 и выше (подробности еще не были опубликованы на момент написания этой статьи). Наиболее вероятно, что любая программа, выполняющая обработку текста, должна начинаться со строки:
Основное правило состоит в том, что если вы можете решить задачу с помощью модуля string, это правильный способ ее решения. В отличие от re (регулярных выражений), функции string в целом гораздо быстрее и в большинстве случаев проще для понимания и использования. Сторонние модули языка Python, включая и некоторые быстрые, написанные на С расширения, предназначены для специализированных задач, однако переносимость и простота, тем не менее, определяют привязку к string везде, где только возможно. Есть и исключения, однако не так много, как вы можете подумать, имея опыт использования других языков.
Модуль string содержит несколько типов инструментов, таких как функции, методы и классы. Он также содержит наиболее общие строковые константы. Например:
>>> import string
>>> string.whitespace
'
|
xyyvhrmv
|
28-07-2011
|
nvKwtX , [url=http://vadfmjcvkbpk.com/]vadfmjcvkbpk[/url], [link=http://lftoktlvjvtt.com/]lftoktlvjvtt[/link], http://mrtijsuhivus.com/
|
|
|
gqwwglmp
|
27-07-2011
|
M4TxTT <a href="http://gznsjbuitbse.com/">gznsjbuitbse</a>
|
|
|
mpmoiikk
|
26-07-2011
|
It9fLC , [url=http://vafjtylgabin.com/]vafjtylgabin[/url], [link=http://lheazendyivb.com/]lheazendyivb[/link], http://jbzgsytggefh.com/
|
|
|
bnmrlo
|
25-07-2011
|
rWaaXG <a href="http://rxrrctadrtue.com/">rxrrctadrtue</a>
|
|
|
Ollie
|
25-07-2011
|
Life is short, and this article saved valublae time on this Earth.
|
|
Последние статьи: Web - программирование / Python /
| |
| | |
Как и ряд других популярных скриптовых языков, Python является великолепным инструментом для сканирования и манипуляций с текстовыми данными. Эта статья суммирует возможности текстовой обработки языка Python для тех программистов, которые являются новичками в программировании на языке Python... подробнее
|
Кол. просмотров: общее - 4218 сегодня - 0
|
|
Вы хотите, чтобы ваш любимый язык был меньше, быстрее, гибче и надежнее? Эти цели и ставил перед собой разработчик Stackless Python... подробнее
|
Кол. просмотров: общее - 4099 сегодня - 0
|
|
Осенью прошлого года был запущен сайт www.iso.ru, разработанный компанией ADT. Движок сайта, представляющий собой набор CGI скриптов, был написан на Perl. По прошествии полугода эксплуатации возникла необходимость расширить функциональность сайта. Поэтому встал вопрос о выборе языка для написания скриптов... подробнее
|
Кол. просмотров: общее - 6646 сегодня - 1
|
|
Эта статья продолжает серию статей о функциональном программирования (ФП) на Python. В ней демонстрируется несколько достаточно сложных концепций ФП. Читателю окажется полезным введение в различные подходы программного решения задач... подробнее
|
Кол. просмотров: общее - 4179 сегодня - 0
|
|
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход... подробнее
|
Кол. просмотров: общее - 4223 сегодня - 1
|
|
|
|
|