>  > 【送料無料】 DUNLOP ダンロップ ウィンターMAXX SJ8 225/65R17 17インチ スタッドレスタイヤ ホイール4本セット BRANDLE ブランドル M60 7J 7.00-17 フジコーポレーション

【送料無料】 DUNLOP ダンロップ ウィンターMAXX SJ8 225/65R17 17インチ スタッドレスタイヤ ホイール4本セット BRANDLE ブランドル M60 7J 7.00-17 フジコーポレーション

  1. 【VENTURA[ベンチュラ]】XUS250X 08 キャリア用 ベースセット シルバー BSY079S
  2. Python

Pythonでエスケープシーケンスを無視(無効化)するraw文字列

Date: 2018-02-04 / tags: Python, 文字列操作
Tweet

Pythonで文字列リテラル'...', "..."の前にrまたはRをつけると 、エスケープシーケンスを展開せずそのままの値が文字列となる。Windowsのパスや正規表現など、バックスラッシュを多用する文字列を扱うときに便利。

スポンサーリンク

【送料無料】 DUNLOP ダンロップ ウィンターMAXX SJ8 ベレッツァ 225/65R17 17インチ スタッドレスタイヤ ホイール4本セット ☆送料無料☆ BRANDLE ブランドル M60 7J 7.00-17 フジコーポレーション

Pythonでは、通常の文字列では表せない文字(タブや改行など)をC言語などと同様にバックスラッシュ\をつけたエスケープシーケンス(\t\nなど)で記述する。

s = 'a\tb\nA\tB'
print(s)
# a b
# A B



raw文字列でエスケープシーケンスを無視(無効化)

文字列リテラル'...', "..."の前にrまたはRをつけると、エスケープシーケンスを展開せずそのままの値が文字列となる。このような文字列はraw文字列(raw strings)と呼ばれる。

rs = r'a\tb\nA\tB'
print(rs)
# a\tb\nA\tB



raw文字列型という特別な型があるわけではなく NAG racing service ナグレーシングサービス 減圧バルブ類 内圧コントロールバルブ 可変減圧型内圧コントローラー「Superb」、あくまでも文字列型で カードでポイント最大34倍 3/21(木)20:00~3/26(火)1:59迄 DUNLOP ダンロップ WINTER MAXX 02 ウィンターマックス WM02 スタッドレス スタッドレスタイヤ 245/50R18 WEDS ジョーカー イゴール ホイールセット 4本 18インチ 18 X 7.5 +38 5穴 114.3、バックスラッシュをエスケープした通常の文字列と等しい。

print(type(rs))
# <class 'str'>
print(rs == 'a\\tb\\nA\\tB')
# True



通常の文字列ではエスケープシーケンスは1文字とみなされるが、raw文字列ではバックスラッシュも文字数にカウントされる。文字列の長さや各文字は以下のようになる。

print(len(s))
# 7
print(list(s))
# ['a', '\t', 'b', '\n', 'A', '\t', 'B']
print(len(rs))
# 10
print(list(rs))
# ['a', '\\', 't', 'b', '\\', 'n', 'A', '\\', 't', 'B']



17インチ ホイール4本セット ブランドル ホイール4本セット 7J スタッドレスタイヤ 225/65R17 M60 7.00-17 ダンロップ BRANDLE ウィンターMAXX SJ8 【送料無料】 DUNLOP SJ8 フジコーポレーション

raw文字列を使うと便利なのが 14インチ サマータイヤ セット【適応車種:タント カスタム(L350、360系)】WEDS ヴェルヴァ スポルト ディープメタル 4.5Jx14Economist ATR-K 155/65R14、Windowsのパスを文字列で表したいとき。

Windowsのパスはバックスラッシュ\で区切られているので、通常文字列を使うといちいち\\のようにエスケープしないといけないが [BLITZ] ブリッツ スロコン スカイライン HV35 01/06~07/10 VQ30DD、raw文字列を使うとそのまま書ける。値としては等価。

path = 'C:\\Windows\\system32\\cmd.exe'
rpath = r'C:\Windows\system32\cmd.exe'
print(path == rpath)
# True



なお、後述のように、末尾が奇数個のバックスラッシュで終わる文字列はエラーになるので注意。この場合は通常の文字列で書くか、末尾だけ通常文字列で書いて連結する必要がある。

path2 = 'C:\\Windows\\system32\\'
# rpath2 = r'C:\Windows\system32\'
# SyntaxError: EOL while scanning string literal
rpath2 = r'C:\Windows\system32' + '\\'
print(path2 == rpath2)
# True



repr()で文字列変数をraw文字列に変換

通常の文字列の変数をエスケープシーケンスを無視(無効化)したraw文字列に変換したい場合、組み込み関数repr()が使える。

s_r = repr(s)
print(s_r)
# 'a\tb\nA\tB'



repr()が返すのはeval()に渡されたときと同じ値を持つようなオブジェクトを表す文字列であり、先頭と末尾に'が付いている。

print(list(s_r))
# ["'", 'a', '\\', 't', 'b', '\\', 'n', 'A', '\\', 't', 'B', "'"]



スライスを使うとrを付けたraw文字列と等価な文字列が得られる。

s_r2 = repr(s)[1:-1]
print(s_r2)
# a\tb\nA\tB
print(s_r2 == rs)
# True
print(r'\t' == repr('\t')[1:-1])
# True



末尾のバックスラッシュに注意

バックスラッシュが直後のクオート文字'または"をエスケープするので、

【送料無料】 DUNLOP ダンロップ ウィンターMAXX SJ8 225/65R17 17インチ スタッドレスタイヤ ホイール4本セット BRANDLE ブランドル M60 7J 7.00-17 フジコーポレーション を海外通販!

セルシオ ダウンサス UCF30 15/8~ 3UZ-FE 1台分 Ti2000 DOWN RS-R (T284TD;【ACTIVE アクティブ】 スロットルKIT [ホルダー:TYPE-1 T-GLD] 巻取φ28 [ステン金具] GSX-S1000/GSX-S1000F 15-16 【1071004SU】;スウィフト ZC/ZD 前期 リアウィング ショーリン

【送料無料】 DUNLOP ダンロップ ウィンターMAXX SJ8 225/65R17 17インチ スタッドレスタイヤ ホイール4本セット BRANDLE ブランドル M60 7J 7.00-17 フジコーポレーション;SPRINT BOOSTER JAPAN VOLVO S60 FB SPRINT BOOSTER;CUSCO (クスコ) type RS Spec-F LSD リア 2way(1.5&2way) Spec-F 品番:LSD 254 LT2 ニッサン ステージア 型式:M35 年式:2001.1~2007.6;【ESPELIR/エスペリア】 スーパーダウンサス (サスペンション) 前後1台分 DAIHATSU COPEN XPLAY※ダウンサスラバーセット ESD-1861;RSR RS-R ダウンサス スバル BRZ ZC6 H24/3~H28/7 FR RS★R DOWN F066D 一台分 RS-R ローダウン サス

SwageLine イージーオーダーホース G&K/クリア ST-20 1000mm 《SWAGE-LINE GAK-1112M-1000》, 【送料無料】 195/65R15 15インチ BRIDGESTONE ブリヂストン エコフォルム CRS/15 6J 6.00-15 DELINTE デリンテ DH2(限定) サマータイヤ ホイール4本セット, ベレッツァ カジュアルG シートカバー ダイハツ タントエグゼカスタム/スバル ルクラ 選べる4カラー D739, RSR RS-R ダウンサス トヨタ カルディナ AZT241W 14/9~19/5 FF RS★R DOWN T644WF フロントのみ RS-R ローダウン サス, 14インチ サマータイヤ セット【ekカスタム(B11W系)】MLJ MLJ エクストリームJ ホワイトポリッシュ 4.5Jx14Economist ATR-K 155/65R14 【代引不可】BELLEZZA(ベレッツァ):Axis アクシス シートカバー (ホワイト) BEAXD853W1

、文字列末尾に奇数個のバックスラッシュ\があるとエラーが発生する。偶数個であればOK。

# print(r'\')
# SyntaxError: EOL while scanning string literal
print(r'\\')
# \\
# print(r'\\\')
# SyntaxError: EOL while scanning string literal



 
 
スポンサーリンク
シェア
Tweet

関連カテゴリー

関連記事

{yahoojp} {note.nkmk.me}
{yahoojp}jpprem01-zenjp40-wl-zd-75224