ノート 前のページ
訪問者数 3049 最終更新 2010-05-09 (日) 15:56:54
/***************************************************************** * outline.c * * Copyright 1999, Clark Cooper * All rights reserved. * * This program is free software; you can redistribute it and/or * modify it under the same terms as Perl. * * Read an XML document from standard input and print an element * outline on standard output. */ #include <stdio.h> #include "xmlparse.h" #define BUFFSIZE 8192 char Buff[BUFFSIZE]; int Depth; void start(void *data, const char *el, const char **attr) { int i; for (i = 0; i < Depth; i++) printf(" "); printf("%s", el); for (i = 0; attr[i]; i += 2) { printf(" %s='%s'", attr[i], attr[i + 1]); } printf("\n"); Depth++; } /* End of start handler */ void end(void *data, const char *el) { Depth--; } /* End of end handler */ void main(int argc, char **argv) { XML_Parser p = XML_ParserCreate(NULL); if (! p) { fprintf(stderr, "Couldn't allocate memory for parser\n"); exit(-1); } XML_SetElementHandler(p, start, end); for (;;) { int done; int len; len = fread(Buff, 1, BUFFSIZE, stdin); if (ferror(stdin)) { fprintf(stderr, "Read error\n"); exit(-1); } done = feof(stdin); if (! XML_Parse(p, Buff, len, done)) { fprintf(stderr, "Parse error at line %d:\n%s\n", XML_GetCurrentLineNumber(p), XML_ErrorString(XML_GetErrorCode(p))); exit(-1); } if (done) break; } } /* End of main */
import xml.parsers.expat # 3 handler functions def start_element(name, attrs): print 'Start element:', name, attrs def end_element(name): print 'End element:', name def char_data(data): print 'Character data:', repr(data) p = xml.parsers.expat.ParserCreate() p.StartElementHandler = start_element p.EndElementHandler = end_element p.CharacterDataHandler = char_data p.Parse("""<?xml version="1.0"?> <parent id="top"><child1 name="paul">Text goes here</child1> <child2 name="fred">More text</child2> </parent>""")
http://d.hatena.ne.jp/kakurasan/20080603/p1 より
#! /usr/bin/python # -*- encoding: utf-8 -*- from xml.parsers.expat import ParserCreate import sys def start_element(name, attrs): print u"要素の開始: %s".encode("utf-8") % name.encode("utf-8") for (key, val) in attrs.iteritems(): # 辞書の各キーに対する処理を行う print u" 属性: %s = %s".encode("utf-8") % (key.encode("utf-8"), val.encode("utf-8")) def end_element(name): print u"要素の終了: %s".encode("utf-8") % name.encode("utf-8") def char_data(data): if data != "\n": print u" 文字データ: %s".encode("utf-8") % data.encode("utf-8") p = ParserCreate() p.buffer_text = True # 文字データが細切れにならないように # ハンドラ関数の関連付け p.StartElementHandler = start_element # 要素の開始 p.EndElementHandler = end_element # 要素の終了 p.CharacterDataHandler = char_data # 文字データ if len(sys.argv) < 2: print >> sys.stderr, u"エラー: 入力ファイルが指定されていません".encode("utf-8") sys.exit(1) infile = sys.argv[1] try: f = open(infile) except IOError: print >> sys.stderr, u'エラー: ファイル "%s" が開けませんでした'.encode("utf-8") % infile sys.exit(1) p.ParseFile(f) # 処理を実行
bingアクセス時に出てきた。
知識として
はじめに、Python+MySQLをFedoraで入れるには
yum install MySQL-python
が必要だった。
## To run with Kanji properly, the Python default encoding should be set to utf-8. ## This is done by including the file /usr/lib/python2.5/site-packages/sitecustomize.py ## with such lines as ## #!/usr/bin/env python ## import sys ## sys.setdefaultencoding('utf-8') ## To check this is properly set, start python and issue ## import sys ## sys.getdefaultencoding() ## which should reply with utf-8. ## See http://python.matrix.jp/tips/string/encoding.htmlや
### A magic for printing UTF-8 characters sys.stdout = codecs.getwriter('utf_8')(sys.stdout)また、MySQLをConnectするときに
connect = MySQLdb.connect(db="dbname", host="localhost", port=3306, user="whoever", passwd="whatever",charset="utf8")のようにcharsetを"utf8"と指定すること。Python MySQL 文字コードの指定
default-character-set=utf8 character-set-server=utf8これにて、mysqldをリスタート。
mysql> show variables like "char%";で
+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+になった。MySQLの文字コードをUTF8に設定したい