IT業務効率化

Python文字列を辞書型に入れるとバックスラッシュが増える??

何が起きたのか?

ハマったのでメモです

a = r"----\n"
print(a)
d = {"a": a}
print(d)

この出力は以下のようになります。

----\n
{'a': '----\\n'}
なんでバックスラッシュ2個になるんだ!!!????

raw stringの罠

ある意味上のコードでハマっているのなら完全自滅ですが、本当はr””ってやったのではなく、DBに接続して引っ張ってきた文字列がすでにraw stringだったので、とてもハマりました。

このraw stringはバックスラッシュなどをそのままprintするような文字列です。

これをdict型の中に入れると「\n」は「\\n」になってしまうのです。

どうしたらいいか

.encode().decode(‘unicode-escape’)を文字列に適用してください。

a = r"----\n".encode().decode('unicode-escape')

print(a)
d = {"a": a}
print(d)

----

{'a': '----\n'}

となります。

ABOUT ME
hirayuki
今年で社会人3年目になります。 日々体当たりで仕事を覚えています。 テーマはIT・教育です。 少しでも技術に親しんでもらえるよう、noteで4コマ漫画も書いています。 https://note.mu/hirayuki