Python の組み込み関数 ascii の使い方です。
ascii 関数で、オブジェクトの文字列表現を取得するコード例と、実行結果を載せました。
(Python) ascii(object)
の説明にあった通り、ascii 関数に『非 ASCII 文字』を渡したときは、\x
や \u
でエスケープされた文字列が返りました。
str を渡した結果
ascii 関数に、str(文字列)を渡した結果です。
ascii('') # '' 空文字列
"''"
普通の ASCII 文字列を渡した結果。
ascii('12345') # '12345'
"'12345'"
ascii('abcde') # 'abcde'
"'abcde'"
非 ASCII 文字列を渡した結果。
\x
や \u
でエスケープされた文字列が返りました。
ascii('ãäëÿ') # 'ãäëÿ'
"'\\xe3\\xe4\\xeb\\xff'"
ascii('あ') # 'あ'
"'\\u3042'"
ascii('漢字') # '漢字'
"'\\u6f22\\u5b57'"
ascii('1aãあ漢字') # '1aãあ漢字'
"'1a\\xe3\\u3042\\u6f22\\u5b57'"
(参考)str 関数の場合です。
str('1aãあ漢字') # '1aãあ漢字'
'1aãあ漢字'
(参考)repr 関数の場合です。
repr('1aãあ漢字') # '1aãあ漢字'
"'1aãあ漢字'"
pathlib.Path を渡した結果
ascii 関数に、pathlib の Path を渡した結果です。
(Python) class pathlib.Path(*pathsegments)
from pathlib import Path
ascii(Path(r'F://abc/あいう/memo.txt')) # WindowsPath('F:/abc/あいう/memo.txt')
"WindowsPath('F:/abc/\\u3042\\u3044\\u3046/memo.txt')"
tuple を渡した結果
ascii 関数に、tuple を渡した結果です。
ascii(()) # ()
'()'
ascii((1, 'a', 'ã', 'あ')) # (1, 'a', 'ã', 'あ')
"(1, 'a', '\\xe3', '\\u3042')"
list を渡した結果
ascii 関数に、list を渡した結果です。
(Python) class list([iterable])
ascii([]) # []
'[]'
ascii([1, 'a', 'ã', 'あ']) # [1, 'a', 'ã', 'あ']
"[1, 'a', '\\xe3', '\\u3042']"
set を渡した結果
ascii 関数に、集合の set を渡した結果です。
(Python) class set([iterable])
ascii(set()) # set()
'set()'
ascii({1, 'a', 'ã', 'あ'}) # {'a', 1, 'ã', 'あ'}
"{'a', 1, '\\xe3', '\\u3042'}"
dict を渡した結果
ascii 関数に、辞書の dict を渡した結果です。
ascii({}) # {}
'{}'
ascii({1: 'a', 2: 'ã', 3: 'あ'}) # {1: 'a', 2: 'ã', 3: 'あ'}
"{1: 'a', 2: '\\xe3', 3: '\\u3042'}"
ascii({'あ': 'ã'}.keys()) # dict_keys(['あ'])
"dict_keys(['\\u3042'])"
ascii({'あ': 'ã'}.values()) # dict_values(['ã'])
"dict_values(['\\xe3'])"
ascii({'あ': 'ã'}.items()) # dict_items([('あ', 'ã')])
"dict_items([('\\u3042', '\\xe3')])"
bytes を渡した結果
ascii 関数に、bytes を渡した結果です。
(Python) class bytes([source[, encoding[, errors]]])
ascii(b'') # b''
"b''"
ascii(b'\x00') # b'\x00'
"b'\\x00'"
ascii(b'\x00\x01') # b'\x00\x01'
"b'\\x00\\x01'"
bytearray を渡した結果
ascii 関数に、bytearray を渡した結果です。
(Python) class bytearray([source[, encoding[, errors]]])
ascii(bytearray()) # bytearray(b'')
"bytearray(b'')"
ascii(bytearray((0,))) # bytearray(b'\x00')
"bytearray(b'\\x00')"
ascii(bytearray((0, 1))) # bytearray(b'\x00\x01')
"bytearray(b'\\x00\\x01')"
function を渡した結果
ascii 関数に、function(関数)を渡した結果です。
ascii(lambda x:x) # <function <lambda> at 0x0000000000000000>
'<function <lambda> at 0x0000000000000000>'
組み込み定数を渡した結果
ascii 関数に、組み込み定数を渡した結果です。
ascii(False) # False
'False'
ascii(True) # True
'True'
ascii(None) # None
'None'
int を渡した結果
ascii 関数に、int(整数)を渡した結果です。
ascii(1) # 1
'1'
ascii(-1) # -1
'-1'
ascii(0) # 0
'0'
float を渡した結果
ascii 関数に、float(浮動小数点数)を渡した結果です。
ascii(float('nan')) # nan
'nan'
ascii(float('inf')) # inf
'inf'
ascii(-0.1) # -0.1
'-0.1'
ascii(0.0) # 0.0
'0.0'
ascii(-0.0) # -0.0
'-0.0'
complex を渡した結果
ascii 関数に、complex(複素数)を渡した結果です。
(Python) class complex([real[, imag]])
ascii(complex(+3.0, +4.0)) # (3+4j)
'(3+4j)'
ascii(complex(+0.0, +0.0)) # 0j
'0j'
ascii(complex(-0.0, -0.0)) # (-0-0j)
'(-0-0j)'
ascii(complex(float('-inf'), 4.0)) # (-inf+4j)
'(-inf+4j)'
ascii(complex(float('nan'), 4.0)) # (nan+4j)
'(nan+4j)'
Decimal を渡した結果
ascii 関数に、Decimal 型(十進数型)を渡した結果です。
(Python) class decimal.Decimal(value="0", context=None)
from decimal import Decimal
ascii(Decimal(2)) # Decimal('2')
"Decimal('2')"
from decimal import Decimal
ascii(Decimal(0.0)) # Decimal('0')
"Decimal('0')"
from decimal import Decimal
ascii(Decimal(-0.0)) # Decimal('-0')
"Decimal('-0')"
from decimal import Decimal
ascii(Decimal(-0.1)) # Decimal('-0.1000000000000000055511151231257827021181583404541015625')
"Decimal('-0.1000000000000000055511151231257827021181583404541015625')"
from decimal import Decimal
ascii(Decimal('-inf')) # Decimal('-Infinity')
"Decimal('-Infinity')"
from decimal import Decimal
ascii(Decimal('nan')) # Decimal('NaN')
"Decimal('NaN')"
datetime.datetime を渡した結果
ascii 関数に、datetime.datetime を渡した結果です。
import datetime
ascii(datetime.datetime.max) # datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)
'datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)'
datetime.timedelta を渡した結果
ascii 関数に、datetime.timedelta を渡した結果です。
import datetime
ascii(datetime.timedelta(0)) # datetime.timedelta(0)
'datetime.timedelta(0)'
import datetime
ascii(datetime.timedelta.max) # datetime.timedelta(days=999999999, seconds=86399, microseconds=999999)
'datetime.timedelta(days=999999999, seconds=86399, microseconds=999999)'
以上です。