Посты с тэгом sample


Python-cjson: быстрая реализация json парсера

Быстрая реализация json парсера на C++ с удобным и понятным синтаксисом.[>>>]
Код выглядит так:

import re
import cjson
import datetime
# Encoding Date objects:
def dateEncoder(d):
    assert isinstance(d, datetime.date)
    return 'new Date(Date.UTC(%d,%d,%d))'%(d.year, d.month, d.day)
json=cjson.encode([1,datetime.date(2007,1,2),2], extension=dateEncoder)
assert json=='[1, new Date(Date.UTC(2007,1,2)), 2]'
# Decoding Date objects:
re_date=re.compile('^new\sDate\(Date\.UTC\(.*?\)\)')
def dateDecoder(json,idx): json=json[idx:] m=re_date.match(json)
    if not m: raise 'cannot parse JSON string as Date object: %s'%json[idx:] args=cjson.decode('[%s]'


Python и кодировки

Сначала ссылка - самое подробное рассмотрение проблем кодировок и юникода в питоне. Внятно, но по аглицки [>>>]
Теперь от себя - у меня есть код, который мигрирует из проекта в проект последние 2 года. Он позволяет забыть про проблемы кодировок на какое-то время. Выглядит он примерно так:

import locale, codecs; locale.setlocale(locale.LC_ALL, '')
# Теперь в encoding положим текущая кодировку локали.
encoding = locale.getlocale()[1]
# Если кодировка не определилась - это винды. Там полюбому UTF-8 :)
if not encoding:
    encoding = "utf-8"
# Установим дефолтную локаль. Фин


NamedTuple: новое в python2.6

Смотрите какая красота появилась в python2.6a1 [>>>]
Используется примерно так:

from collections import NamedTuple
Point = NamedTuple(‘Point’, ‘x y’)
p = Point(10, 5)
print p.x # напечатает 10
print p.y # напечатает полюбому 5


buzhug: база данных на коленке

BuzHug: еще одно решение для хранения данных, на этот рас pure python style. Красивое и правильное решение задачи. [>>>]

Оно действительно работает быстро. На удивление быстро, всего в 6 раз медленнее mysql. Но это очень хороший показатель, ведь я пока не пробовал ничего оптимизировать, хотябы через Pyrex.

Пример:

from buzhug import Base
from datetime import date

# buzhug похож на sql, только для питонистов
# разные формы create table
teams = Base('teams')
teams.create(('name',str),('city',str))

players = Base('players').create(
        ('n


SOAP FTW

Исторически сложилось так, что я не люблю XML RPC. Ну не знаю почему, просто нелюблю. SOAP не люблю тоже, но его просто много и с ним приходится считаться.

Обновилась неплохая реализация SOAP для Python, называется разумеется soaplib [>>>]


А вот и пример:


from soaplib.wsgi_soap import SimpleWSGISoapApp
from soaplib.service import soapmethod
from soaplib.serializers.primitive import String, Integer, Array

class HelloWorldService(SimpleWSGISoapApp):
    @soapmethod(String,Integer,_returns=Array(String))
    def say_hello(self,name,times):
        results = []
        for i in range(0,times):
            results.append('Hello, %s'%name)
        return results

def