...'
,"..."
Python-da bu sətir literallarına aşağıdakı simvollardan biri ilə prefiks qoysanız, qaçış ardıcıllığını genişləndirmədən dəyər sətir olacaq.
r
R
Windows yolları və müntəzəm ifadə nümunələri kimi çoxlu əks xətlərdən istifadə edən sətirlərlə işləyərkən faydalıdır.
Aşağıdakı məlumatlar burada verilir.
- qaçış ardıcıllığı
- Xam sətirlərdə qaçış ardıcıllığına məhəl qoymayın (deaktiv edin).
- Normal sətri xam sətirə çevirin:
repr()
- Sonda əks kəsişə diqqət yetirin.
qaçış ardıcıllığı
Python-da normal sətirdə təmsil oluna bilməyən simvollar (məsələn, nişanlar və yeni sətirlər) C dilinə bənzər tərs kəsikli qaçış ardıcıllığından istifadə etməklə təsvir edilir. Qaçış ardıcıllığının nümunəsi aşağıda göstərilmişdir.
\t
\n
s = 'a\tb\nA\tB'
print(s)
# a b
# A B
Xam sətirlərdə qaçış ardıcıllığına məhəl qoymayın (deaktiv edin).
...'
,"..."
Əgər belə bir sətirə aşağıdakılardan biri ilə prefiks qoysanız, dəyər qaçış ardıcıllığını genişləndirmədən sətirə çevriləcək. Belə bir simə xam simli deyilir.
r
R
rs = r'a\tb\nA\tB'
print(rs)
# a\tb\nA\tB
Xam sətir tipi adlanan xüsusi bir növ yoxdur, o, sadəcə bir sətir növüdür və aşağıdakı kimi əks olunan tərs kəsikli normal sətirə bərabərdir.\\
print(type(rs))
# <class 'str'>
print(rs == 'a\\tb\\nA\\tB')
# True
Normal sətirdə qaçış ardıcıllığı bir simvol hesab edilir, lakin xam sətirdə əks sətirlər də simvol kimi sayılır. Sətin və hər simvolun uzunluğu aşağıdakı kimidir.
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 yolu
Windows yolunu sətir kimi təqdim etmək istədiyiniz zaman xam sətirdən istifadə faydalıdır.
Windows yolları tərs kəsiklərlə ayrılır, ona görə də normal sətirdən istifadə edirsinizsə, yoldan aşağıdakı kimi qaçmalısınız, lakin xam sətirdən istifadə edirsinizsə, onu olduğu kimi yaza bilərsiniz. Dəyərlər ekvivalentdir.\\
path = 'C:\\Windows\\system32\\cmd.exe'
rpath = r'C:\Windows\system32\cmd.exe'
print(path == rpath)
# True
Nəzərə alın ki, tək sayda əks kəsiklə bitən sətir aşağıda təsvir olunduğu kimi xəta ilə nəticələnəcək. Bu zaman sətri normal sətir kimi yazmaq və ya sətirin yalnız sonunu normal sətir kimi yazaraq birləşdirmək lazımdır.
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() ilə normal sətirləri xam sətirlərə çevirin
Əgər siz qaçış ardıcıllığına məhəl qoymadan (deaktiv edərək) normal sətri xam sətirə çevirmək istəyirsinizsə, daxili repr() funksiyasından istifadə edə bilərsiniz.
s_r = repr(s)
print(s_r)
# 'a\tb\nA\tB'
repr() funksiyasının qaytardığı obyekti təmsil edən sətirdir ki, o, eval()-a ötürüldüyü zamankı ilə eyni dəyərə malikdir, aparıcı və arxadakı simvollarla.
print(list(s_r))
# ["'", 'a', '\\', 't', 'b', '\\', 'n', 'A', '\\', 't', 'B', "'"]
Dilimlərdən istifadə edərək, r əlavə edilmiş xam sətirə ekvivalent sətir əldə edə bilərik.
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
Sonda əks kəsişə diqqət yetirin.
Əks kəsik işarəsi ondan dərhal sonra sitat simvolundan qaçdığından, sətirin sonunda tək sayda əks tirə varsa, xəta baş verəcəkdir. Cüt sayda əks kəsiklər yaxşıdır.
# print(r'\')
# SyntaxError: EOL while scanning string literal
print(r'\\')
# \\
# print(r'\\\')
# SyntaxError: EOL while scanning string literal