タグ

stringとPythonに関するoinumeのブックマーク (6)

  • Python2のstr/unicodeとencode/decode - Qiita

    2種類の文字列 Python2には文字列が2種類ある。 ここではその2つを str文字列 および unicode文字列 と呼び、これらをまとめて 文字列 と呼ぶ。 公式ドキュメントでも用語があまり統一されていないので、とりあえずこう呼ぶことにする。 先に言っておくと、基的にunicode文字列を使うべき。 str文字列 '...' リテラルで生成されるオブジェクト UTF-8, Shift-JISなどの符号化方式によって各文字を符号化して得られるバイトを並べたもの 1文字が複数バイトで表現されることもある str文字列そのものは、符号化に使われた符号化方式の情報をもたない 符号化方式を知るには基的に片っ端から試すらしい 対話環境で 'あいう' と入力すると、 \x で1バイトずつ区切られたバイト列が返る

    Python2のstr/unicodeとencode/decode - Qiita
  • Python 2/3 両対応のために `unicode_literals` を使うべきか - methaneのブログ

    背景 Python 2 用のコードを書くときは、 Python 3 対応を見越して # -*- coding: utf-8 -*- from __future__ import division, print_function, absolute_import をテンプレとして書いています。 __future__ はファイルごとにバラバラだと混乱を招くので、今関わってるプロジェクトでもこれを新規ファイルのテンプレとして登録してもらってます。 Python 3 の構文、リテラルを有効にする __future__ のうち、 unicode_literals だけは今まで使っていなかったのですが、ふと「あ、やっぱり使うべきだな」と思いついたので、そのへんをまとめます。 第三の文字列型 native string Python 2 には2つの文字列型 str (bytes) と unicode が

    Python 2/3 両対応のために `unicode_literals` を使うべきか - methaneのブログ
  • python2.xでの日本語(マルチバイト文字)問題を一掃する!(その2) — ExSoft

    前回は、文字コード関連のエラーについての理解を深めましたが、 今回は、もう一歩踏み込んで、文字コードそのものを調査・加工する方法を見ていきましょう。 最近では、ネットワークを通じた別の環境(OS、プログラミング言語、プロトコル、、)との情報のI/Oをする機会も増え、マルチバイトに関する知識は益々重要になってきています。 URLエンコード、base64エンコーディング、数値文字参照、等、文字に関連した技術は広く、今後も増える一方だと思いますが、文字コードをしっかりと理解すると、これらについても理解を深める事ができます。 それでは、いきます。 # 値がunicode型かstr型かを調べる (主にデバッグ用) print type(val) # 値がunicode型かを調べる if isinstance(val,unicode): # 値がstr型かを調べる if isinstance(va

  • Python で日本語を扱う基本をまとめてみるメモ(その2) - 猫(=・ω・=)顔 1.0β

    「その1」のまとめ ⇒Python で日語を扱う基をまとめてみるメモ(その1) - (=・ω・=)顔 1.0β 1行めか2行めで # coding: 〜 を指定する。 '' は通常の文字列。保存した形式のままの「バイト列」。 u'' は Unicode 文字列。多バイト文字環境で1文字を1文字として扱うために必要。 通常の文字列から Unicode 文字列への変換は unicode() 関数を使う。 今日のお題 unicode() 関数をもうちょっと探る Unicode 文字列を作る別の方法 文字コードの変換方法 (1) Unicode 文字列から任意の encoding へ 文字コードの変換方法 (2) encoding-A から encoding-B へ unicode() 関数をもうちょっと探る 前回のおさらい。 以下、通常の文字列(バイト列)は、メンドクサイから全部 euc-

    Python で日本語を扱う基本をまとめてみるメモ(その2) - 猫(=・ω・=)顔 1.0β
  • python2.xでの日本語(マルチバイト文字)問題を一掃する!(その1) — ExSoft

    python2.xを使い始めて、必ずと言って良いほど遭遇するのが日語(マルチバイト)関連の問題です。 ネットで同様のケースを調べて、あまり理解をせずに、対処療法的にその場の問題を回避している人も多いように思いますが、一度腰を据えて理解すれば、それほど難しくないですし、python以外の言語にも応用ができます。 マルチバイト問題については、概念だけではなく、実際に手を動かし、目で確かめる(文字コードそのものを見る)事が重要です。 今回は、python2.xで遭遇する文字コード関連のエラーを実際に発生させ、その理由を理解した上で対処を行ってみましょう。 文字コードの定義 ケース1 [ 再現 ] pythonスクリプトファイルのencodingをcp932にし、以下を記述します。 ustr = u'い' [ 現象 ] SyntaxError: Non-ASCII character '\x8

  • 文字列の操作 - ひきメモ

    文字列のメソッドは正規表現を使うより速いので、文字列の操作をする場合は、まず文字列のメソッドでできないかを調べた方がよいです。 文字列の一部を取り出す >>> s = "python" >>> s[2] # 2番目の要素を取り出す 't' >>> s[1:4] # 1番目から3番目までの文字を取り出す 'yth' >>> print s[2:] # 2番目から末尾までの文字を取り出す そん >>> s[0] = "P" # 文字列は不変なので、要素への代入は不可 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment 文字列が○○だけであるかを調べる >>> "abcABC123".isaln

    文字列の操作 - ひきメモ
  • 1