【Python】str 関数の使い方と実行結果

Python の組み込み関数 strエスティーアール の使い方です。

str 関数で、オブジェクトの文字列表現を取得するコード例と、実行結果を載せました。

str(object='')

str を渡した結果

str 関数に、strエスティーアール(文字列)を渡した結果です。

(Python) class str(object='')

str('') # '' 空文字列
''

普通の ASCII 文字列アスキー もじれつを渡した結果。

str('12345') # '12345'
'12345'
str('abcde') # 'abcde'
'abcde'

非 ASCII 文字列ひ アスキー もじれつを渡した結果。

str('ãäëÿ') # 'ãäëÿ'
'ãäëÿ'
str('あ') # 'あ'
'あ'
str('漢字') # '漢字'
'漢字'
str('1aãあ漢字') # '1aãあ漢字'
'1aãあ漢字'

(参考)asciiアスキー 関数の場合です。

(Python) ascii(object)

ascii('1aãあ漢字') # '1aãあ漢字'
"'1a\\xe3\\u3042\\u6f22\\u5b57'"

(参考)reprアールイーピーアール 関数の場合です。

(Python) repr(object)

repr('1aãあ漢字') # '1aãあ漢字'
"'1aãあ漢字'"

pathlib.Path を渡した結果

str 関数に、pathlibパスリブPathパス を渡した結果です。

(Python) class str(object='')

(Python) class pathlib.Path(*pathsegments)

from pathlib import Path
str(Path(r'F://abc/あいう/memo.txt')) # WindowsPath('F:/abc/あいう/memo.txt')
'F:\\abc\\あいう\\memo.txt'

tuple を渡した結果

str 関数に、tupleタプル を渡した結果です。

(Python) class str(object='')

(Python) tuple([iterable])

str(()) # ()
'()'
str((1, 'a', 'ã', 'あ')) # (1, 'a', 'ã', 'あ')
"(1, 'a', 'ã', 'あ')"

list を渡した結果

str 関数に、listリスト を渡した結果です。

(Python) class str(object='')

(Python) class list([iterable])

str([]) # []
'[]'
str([1, 'a', 'ã', 'あ']) # [1, 'a', 'ã', 'あ']
"[1, 'a', 'ã', 'あ']"

set を渡した結果

str 関数に、集合しゅうごうsetセット を渡した結果です。

(Python) class str(object='')

(Python) class set([iterable])

str(set()) # set()
'set()'
str({1, 'a', 'ã', 'あ'}) # {'a', 1, 'ã', 'あ'}
"{'a', 1, 'ã', 'あ'}"

dict を渡した結果

str 関数に、辞書じしょdictディクト を渡した結果です。

(Python) class str(object='')

(Python) class dict(**kwarg)

(Python) keys()

(Python) values()

(Python) items()

str({}) # {}
'{}'
str({1: 'a', 2: 'ã', 3: 'あ'}) # {1: 'a', 2: 'ã', 3: 'あ'}
"{1: 'a', 2: 'ã', 3: 'あ'}"
str({'あ': 'ã'}.keys()) # dict_keys(['あ'])
"dict_keys(['あ'])"
str({'あ': 'ã'}.values()) # dict_values(['ã'])
"dict_values(['ã'])"
str({'あ': 'ã'}.items()) # dict_items([('あ', 'ã')])
"dict_items([('あ', 'ã')])"

bytes を渡した結果

str 関数に、bytesバイツ を渡した結果です。

(Python) class str(object='')

(Python) class bytes([source[, encoding[, errors]]])

str(b'') # b''
"b''"
str(b'\x00') # b'\x00'
"b'\\x00'"
str(b'\x00\x01') # b'\x00\x01'
"b'\\x00\\x01'"

bytearray を渡した結果

str 関数に、bytearrayバイトアレイ を渡した結果です。

(Python) class str(object='')

(Python) class bytearray([source[, encoding[, errors]]])

str(bytearray()) # bytearray(b'')
"bytearray(b'')"
str(bytearray((0,))) # bytearray(b'\x00')
"bytearray(b'\\x00')"
str(bytearray((0, 1))) # bytearray(b'\x00\x01')
"bytearray(b'\\x00\\x01')"

function を渡した結果

str 関数に、functionファンクション(関数)を渡した結果です。

(Python) class str(object='')

(Python) ラムダ (lambda)

str(lambda x:x) # <function <lambda> at 0x0000000000000000>
'<function <lambda> at 0x0000000000000000>'

組み込み定数を渡した結果

str 関数に、組み込み定数を渡した結果です。

(Python) class str(object='')

(Python) False

(Python) True

(Python) None

str(False) # False
'False'
str(True) # True
'True'
str(None) # None
'None'

int を渡した結果

str 関数に、intイント整数せいすう)を渡した結果です。

(Python) class str(object='')

(Python) class int([x])

str(1) # 1
'1'
str(-1) # -1
'-1'
str(0) # 0
'0'

float を渡した結果

str 関数に、floatフロート浮動小数点数ふどうしょうすうてんすう)を渡した結果です。

(Python) class str(object='')

(Python) class float([x])

str(float('nan')) # nan
'nan'
str(float('inf')) # inf
'inf'
str(-0.1) # -0.1
'-0.1'
str(0.0) # 0.0
'0.0'
str(-0.0) # -0.0
'-0.0'

complex を渡した結果

str 関数に、complexコンプレックス複素数ふくそすう)を渡した結果です。

(Python) class str(object='')

(Python) class complex([real[, imag]])

str(complex(+3.0, +4.0)) # (3+4j)
'(3+4j)'
str(complex(+0.0, +0.0)) # 0j
'0j'
str(complex(-0.0, -0.0)) # (-0-0j)
'(-0-0j)'
str(complex(float('-inf'), 4.0)) # (-inf+4j)
'(-inf+4j)'
str(complex(float('nan'), 4.0)) # (nan+4j)
'(nan+4j)'

Decimal を渡した結果

str 関数に、Decimal 型デシマルがた十進数型じゅっしんすうがた)を渡した結果です。

(Python) class str(object='')

(Python) class decimal.Decimal(value="0", context=None)

from decimal import Decimal
str(Decimal(2)) # Decimal('2')
'2'
from decimal import Decimal
str(Decimal(0.0)) # Decimal('0')
'0'
from decimal import Decimal
str(Decimal(-0.0)) # Decimal('-0')
'-0'
from decimal import Decimal
str(Decimal(-0.1)) # Decimal('-0.1000000000000000055511151231257827021181583404541015625')
'-0.1000000000000000055511151231257827021181583404541015625'
from decimal import Decimal
str(Decimal('-inf')) # Decimal('-Infinity')
'-Infinity'
from decimal import Decimal
str(Decimal('nan')) # Decimal('NaN')
'NaN'

datetime.datetime を渡した結果

str 関数に、datetime.datetimeデートタイム ドット デートタイム を渡した結果です。

(Python) class str(object='')

(Python) class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

(Python) datetime.max

import datetime
str(datetime.datetime.max) # datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)
'9999-12-31 23:59:59.999999'

datetime.timedelta を渡した結果

str 関数に、datetime.timedeltaデートタイム ドット タイムデルタ を渡した結果です。

(Python) class str(object='')

(Python) class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

(Python) timedelta.max

import datetime
str(datetime.timedelta(0)) # datetime.timedelta(0)
'0:00:00'
import datetime
str(datetime.timedelta.max) # datetime.timedelta(days=999999999, seconds=86399, microseconds=999999)
'999999999 days, 23:59:59.999999'

str(object=b'', encoding='utf-8', errors='strict')

str 関数に、bytesバイツencodingエンコーディングerrorsエラース を渡した結果です。

バイト列を文字列にデコードすることができました。

str 関数の説明によると、str(bytes, encoding, errors) は、bytes.decode(encoding, errors)等価とうかである、とのことでした。

(Python) class str(object=b'', encoding='utf-8', errors='strict')

(Python) bytes.decode(encoding="utf-8", errors="strict")

(Python) 標準エンコーディング ('ascii', 'utf-8', ...)

(Python) エラーハンドラ ('strict', 'ignore', 'replace', ...)

str(b'', encoding='utf-8', errors='strict')
''
str(b'a', encoding='utf-8', errors='strict')
'a'

'あ''utf-8' でエンコードしたときのバイト列 (bytesバイツ) です。

'あ'.encode('utf-8')
b'\xe3\x81\x82'

'あ'.encode('utf-8') のバイト列は、当然のことながら、'utf-8' でデコードできました。

なので、errors を指定しても、効果はありませんでした。

str(b'\xe3\x81\x82', encoding='utf-8', errors='strict')
'あ'
str(b'\xe3\x81\x82', encoding='utf-8', errors='ignore')
'あ'
str(b'\xe3\x81\x82', encoding='utf-8', errors='replace')
'あ'
str(b'\xe3\x81\x82', encoding='utf-8', errors='backslashreplace')
'あ'
str(b'\xe3\x81\x82', encoding='utf-8', errors='surrogateescape')
'あ'

'あ'.encode('utf-8') のバイト列は、'ascii' だと、デコードできませんでした。

なので、errors の内容に応じて、結果が変わりました。

str(b'\xe3\x81\x82', encoding='ascii', errors='strict')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)
str(b'\xe3\x81\x82', encoding='ascii', errors='ignore')
''
str(b'\xe3\x81\x82', encoding='ascii', errors='replace')
'���'
str(b'\xe3\x81\x82', encoding='ascii', errors='backslashreplace')
'\\xe3\\x81\\x82'
str(b'\xe3\x81\x82', encoding='ascii', errors='surrogateescape')
'\udce3\udc81\udc82'

'xmlcharrefreplace''namereplace' は、文字列をバイト列にエンコードするときに、使用するものでした。

なので、エラーになりました。

(Python) エラーハンドラ ('strict', 'ignore', 'replace', ...)

str(b'\xe3\x81\x82', encoding='ascii', errors='xmlcharrefreplace')
TypeError: don't know how to handle UnicodeDecodeError in error callback
str(b'\xe3\x81\x82', encoding='ascii', errors='namereplace')
TypeError: don't know how to handle UnicodeDecodeError in error callback

以上です。

スポンサーリンク
Python
シェアする(押すとSNS投稿用の『編集ページ』に移動します)
フォローする(RSSフィードに移動します)
スポンサーリンク
シラベルノート
タイトルとURLをコピーしました