LoginSignup
0
0

More than 3 years have passed since last update.

[Python3 入門 13日目]7章 文字列(7.1〜7.1.1.1)

Posted at

7.1 文字列

7.1.1 Unicode

  • コンピュータの記憶の基本単位はバイトで、8個のビットを使って256種類の一意な値を表現できる。

    • ビット:2進数(0と1、バイナリ)で表した数字の桁数。4ビットは4桁、8ビットは8桁の2進数であり、それぞれ2の4乗(16)、2の8乗(256)通りの数字を表せる。
    • バイト:8ビットで1バイト。1バイトを表すのに16進数を使うと分かりやすい。
  • Unicodeは世界の言語の全ての文学と数学、そのほかの分野の記号を定義しようという発展途上の国際標準。

7.1.1.1 Python 3のUnicode文字列

  • Python3の文字列はUnicode文字列であり、バイト列ではない。
  • 文字のUnicode IDまたは名前を知っている場合、Python文字列でそれを使うことができる。
  • Pythonのunicodedataモジュールには双方向ほ変換関数が含まれている。
    • lookup():名前(大文字と小文字を区別しない)を与えると、Unicode文字が返される。
    • name():Unicode文字を与えると、大文字の名前が返される。

>>> def unicode_test(v):
...     import unicodedata
#文字から名前を引き出す
...     name=unicodedata.name(v)
#名前から文字列を引き出す。
...     v2=unicodedata.lookup(name)
...     print("v=%s,name=%s,v2=%s"%(v,name,v2))
... 
>>> unicode_test("A")
v=A,name=LATIN CAPITAL LETTER A,v2=A

#UnicodeのASCII記号
>>> unicode_test("$")
v=$,name=DOLLAR SIGN,v2=$
#Unicodeの通貨記号
>>> unicode_test("\u00a2")
v=¢,name=CENT SIGN,v2=¢
>>> unicode_test("\u20ac")
v=,name=EURO SIGN,v2=
#代替記号の表示
>>> unicode_test("\u2603")
v=,name=SNOWMAN,v2=


>>> place = "cafe"
>>> place
'cafe'
>>> import unicodedata
>>> unicodedata.name('\u00e9')
'LATIN SMALL LETTER E WITH ACUTE'
>>> unicodedata.lookup('LATIN SMALL LETTER E WITH ACUTE')
'é'
#コードにより文字列指定
>>> place = "caf\u00e9"
>>> place
'café'
#名前により文字列指定
>>> place = "caf\N{LATIN SMALL LETTER E WITH ACUTE}"
>>> place
'café'

>>> u="\N{LATIN SMALL LETTER U WITH DIAERESIS}"
>>> u
'ü'

#len()はバイト数ではなく、Unicodeの文字数を数える。
>>> len("&")
1
>>> len("\U0001f47b")
1


感想

エンコーディングやデコーディング、バイト列等聞いた覚えがないような言葉が結構出てきた。一つ一つ調べながらやろう。

参考文献

「Bill Lubanovic著 『入門 Python3』(オライリージャパン発行)」

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0