Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
разработчики стараются придерживаться единогоAPI,который продиктован стандартом
Содержание книги
- Возвращает наименьший индекс,с которого начинается вхождение подстроки sub в строку.Параметры start и end
- Удаляет пробельные символы слева
- text = open(string.__file__[:-1]).read() start = 0
- import StringIO my_string = "1234567890" f1 = StringIO.StringIO()
- Синтаксис регулярного выражения
- Фрагмент справа или фрагмент слева
- Взгляд вперед:строка должна соответствовать заданному регулярному
- Наоборот,не соответствует промежутку между символами на
- r"aa|bb|cc|AA|BB|CC"
- Строка из двух одинаковых букв,но шаблон задан с использованием групп
- quot;""Отладка рег. выражения. Перед отладкой лучше убрать лишние скобки """
- decoder = re.compile(r'^([-+]?)0*(\d*)((?:\.\d*)?)((?:[eE][-+]?\d+)?)$')
- Для исключения неоднозначности документ вUnicodeможет быть в самом начале снабжен
- name,number,text a,1,something here b,2,"one, two, three" c,3,"no commas here"
- input_file.close() output_file.close()
- fieldnames=['name', 'number', 'text']) output_file = open("pr1.csv", "wb")
- Разбор сообщения. Класс Message
- quot;felton olive" <zinakinch@thecanadianteacher.com>
- parts.append(submsg.get_content_type()) ct_fields.append(submsg.get('Content-Type', '')) filenames.append(submsg.get_filename())
- from email.MIMEMultipart import MIMEMultipart from email.MIMEText import MIMEText
- class MIMEBase(_maintype, _subtype, **_params)
- for text, enc in email.Header.decode_header(subj): print enc, text
- lt;?xml version="1.0" encoding="iso-8859-1"?> <expression>
- lt;operation type="+"> <operand>2</operand> <operand>
- from xml.dom import minidom dom = minidom.Document()
- разработчики стараются придерживаться единогоAPI,который продиктован стандартом
- previousSibling(предыдущий брат).parentNode
- getAttribute(attname). getAttributeNode(attrname). removeAttribute(attname). removeAttributeNode(oldAttr). setAttribute(attname, value). setAttributeNode(newAttr). Пространства имен. lt;?xml version="1.0" encoding="UTF-8"?> <rdf:
- dom = xml.dom.minidom.parse("ex.xml")
- if node.nodeType == node.ELEMENT_NODE: print node.nodeName, node.namespaceURI
- Для корректной работы сценарии помещаются в предназначенный для этого каталог наweb-сервере (обычно он называется cgi-bin) или, если это разрешено конфигурацией
- print """Content-Type: text/plain
- print """Content-Type: image/jpeg
- В приведенных примерах имена появлялись в строке запроса только один раз. Некоторые формы порождают несколько значений для одного имени. Получить все значения можно с
- В начале отлаживаемого сценария нужно поставить
- lt;Directory "/var/www/html/mywebdir> AddHandler python-program .py PythonHandler mprocess
- password = req.get_basic_auth_pw() user = req.connection.user
- Документыzopeможно писать на языкеdtml -дополненииhtmlс синтаксисом для включения значений подобноssi (server-side include). Например,для вставки переменной
- С названием документа можно использовать
- lt;li tal:define="s modules/string" tal:repeat="el python:s.digits">
- Каждый сокет относится к одному из коммуникационных доменов. Модуль socket
- def do_something(x): lst = map(None, x); lst.reverse();
- print socket.getservbyname(srv, 'tcp'), srv
- Здравствуйте. Я изучаю курс по языку Python и отправляю письмо его автору.
- From smtplib import SMTP connect = smtp('mx. Abcde. Ru') connect. Set_debuglevel(1)
- Учетные данные пользователя: Server = "pop. Server. Com" username = "user" userpassword = "secretword"
- Получает строку s с приветствиемPOP3-сервера
- Команда аналогичнаretr,но Загружает только заголовок и
- Функции для загрузки сетевых объектов
- n=1&n=3&n=4&button=%F0%D2%C9%D7%C5%D4
Анализ XML-документа
Для работы с готовымXML-документом нужно воспользоватьсяXML-анализаторами.АнализXML-документа с порождением объекта класса Document происходит всего в одной строчке, с помощью функции parse().Здесь стоит заметить,что кроме стандартного пакета xml
можно поставить пакет PyXML или альтернативные коммерческие пакеты.Тем не менее,
разработчики стараются придерживаться единогоAPI,который продиктован стандартом
DOM Level 2:
import xml.dom.minidom
dom = xml.dom.minidom.parse("expression.xml")
dom.normalize()
def output_tree(node, level=0):
if node.nodeType == node.TEXT_NODE: if node.nodeValue.strip():
print ". "*level, node.nodeValue.strip() else: # ELEMENT_NODE или DOCUMENT_NODE
atts = node.attributes or {} att_string = ", ".join(
["%s=%s " % (k, v) for k, v in atts.items()]) print ". "*level, node.nodeName, att_string
for child in node.childNodes: output_tree(child, level+1)
output_tree(dom)
В этом примере дерево выводится с помощью определенной функции output_tree(),которая принимает на входе узел и вызывается рекурсивно для всех вложенных узлов.
В результате получается примерно следующее:
#document
. expression
. . operation type=+
. . . operand
. . . . 2
. . . operand
. . . . operation type=*
. . . . . operand
. . . . . . 3
. . . . . operand
. . . . . . 4
Здесь же применяется метод normalize() для того,чтобы все текстовые фрагменты были слиты воедино(в противном случае может следовать подряд несколько узлов с текстом).
Можно заметить,что даже в небольшом примере использовались атрибуты узлов:node.nodeType указывает тип узла,node.nodeValue применяется для доступа к данным,
node.nodeName дает имя узла(соответствует названию тега),node.attributes дает доступ к атрибутам узла.node.childNodes применяется для доступа к дочерним узлам.Этих свойств достаточно,чтобы рекурсивно обойти дерево.
Все узлы являются экземплярами подклассов класса Node.Они могут быть следующих типов:
|