...'
,"..."
Ing Python, yen sampeyan prefix string literals karo salah siji saka karakter ing ngisor iki, Nilai bakal dadi string tanpa ngembangaken urutan uwal.
r
R
Migunani nalika nangani senar sing nggunakake akeh garis miring mundur, kayata jalur Windows lan pola ekspresi reguler.
Informasi ing ngisor iki kasedhiya ing kene.
- urutan uwal
- Nglirwakake (mateni) urutan uwal ing strings mentah
- Ngonversi string normal dadi string mentah:
repr()
- Wigati backslash ing mburi.
urutan uwal
Ing Python, karakter sing ora bisa diwakili ing string normal (kayata tab lan baris anyar) diterangake nggunakake urutan uwal kanthi garis miring terbalik, padha karo basa C. Conto urutan uwal kapacak ing ngisor iki.
\t
\n
s = 'a\tb\nA\tB'
print(s)
# a b
# A B
Nglirwakake (mateni) urutan uwal ing strings mentah
...'
,"..."
Yen sampeyan prefiks string literal karo salah siji saka ing ngisor iki, nilai bakal dadi string tanpa ngembangaken urutan uwal. Senar kuwi diarani senar mentah.
r
R
rs = r'a\tb\nA\tB'
print(rs)
# a\tb\nA\tB
Ora ana jinis khusus sing diarani jinis senar mentah, mung jinis senar lan padha karo senar normal kanthi garis miring mundur sing dituduhake kaya ing ngisor iki\\
print(type(rs))
# <class 'str'>
print(rs == 'a\\tb\\nA\\tB')
# True
Ing string normal, urutan uwal dianggep minangka siji karakter, nanging ing string mentah, garis miring mundur uga dianggep minangka karakter. Dawane senar lan saben karakter kaya ing ngisor iki.
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']
Windows Path
Nggunakake senar mentah migunani yen sampeyan pengin makili path Windows minangka senar.
Windows path dipisahake dening backslashes, supaya yen sampeyan nggunakake senar normal, sampeyan kudu uwal path minangka nderek, nanging yen sampeyan nggunakake senar mentahan, sampeyan bisa nulis minangka. Nilai-nilai kasebut padha.\\
path = 'C:\\Windows\\system32\\cmd.exe'
rpath = r'C:\Windows\system32\cmd.exe'
print(path == rpath)
# True
Elinga yen string sing dipungkasi kanthi jumlah garis miring mundur sing ganjil bakal nyebabake kesalahan, kaya sing diterangake ing ngisor iki. Ing kasus iki, perlu kanggo nulis senar minangka senar normal, utawa concatenate dening nulis mung mburi senar minangka senar normal.
path2 = 'C:\\Windows\\system32\\'
# rpath2 = r'C:\Windows\system32\'
# SyntaxError: EOL while scanning string literal
rpath2 = r'C:\Windows\system32' + '\\'
print(path2 == rpath2)
# True
Ngonversi string normal dadi string mentah kanthi repr()
Yen sampeyan pengin Ngonversi senar normal menyang senar mentahan nglirwakake (mateni) urutan uwal, sampeyan bisa nggunakake dibangun ing fungsi repr ().
s_r = repr(s)
print(s_r)
# 'a\tb\nA\tB'
Apa repr () ngasilake senar sing makili obyek sing nduweni nilai sing padha nalika wis liwati kanggo eval (), karo karakter anjog lan mburine.
print(list(s_r))
# ["'", 'a', '\\', 't', 'b', '\\', 'n', 'A', '\\', 't', 'B', "'"]
Nggunakake irisan-irisan, kita bisa njaluk senar padha karo senar mentahan karo r ditempelake.
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
Wigati backslash ing mburi.
Wiwit garis miring terbalik lolos saka karakter kutipan sanalika sawise iku, bakal ana kesalahan yen ana nomer garis miring mundur sing ganjil ing mburi senar. Jumlah garis miring mundur sing genap ora masalah.
# print(r'\')
# SyntaxError: EOL while scanning string literal
print(r'\\')
# \\
# print(r'\\\')
# SyntaxError: EOL while scanning string literal