Python-да өңделмеген жолдармен қашу ретін елемеу (өшіру).

Іскерлік

...',"..."Python тілінде осы жол литералдарын келесі таңбалардың бірімен префикспен белгілесеңіз, мән шығу ретін кеңейтпей жолға айналады.

  • r
  • R

Windows жолдары және тұрақты өрнек үлгілері сияқты кері қиғаш сызықтарды көп пайдаланатын жолдармен жұмыс істеу кезінде пайдалы.
Мұнда келесі ақпарат берілген.

  • құтылу реті
  • Шикі жолдардағы шығу ретін елемеу (өшіру).
  • Қалыпты жолды өңделмеген жолға түрлендіру:repr()
  • Соңындағы кері қиғаш сызықты ескеріңіз.

құтылу реті

Python тілінде қалыпты жолда ұсынылмайтын таңбалар (қойындылар мен жаңа жолдар сияқты) Си тіліне ұқсас кері қиғаш сызықтары бар қашу ретін пайдалану арқылы сипатталады. Шығу ретінің мысалы төменде көрсетілген.

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

Шикі жолдардағы шығу ретін елемеу (өшіру).

...',"..."Мұндай жол литералына келесілердің бірімен префикс қойсаңыз, мән шығу ретін кеңейтпей жолға айналады. Мұндай жолды шикі жол деп атайды.

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

Шикі жол түрі деп аталатын арнайы түрі жоқ, ол жай ғана жол түрі және төмендегідей кері қиғаш сызықпен берілген қалыпты жолға тең.
\\

print(type(rs))
# <class 'str'>

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

Қалыпты жолда қашу тізбегі бір таңба болып саналады, бірақ өңделмеген жолда кері қиғаш сызықтар да таңбалар ретінде есептеледі. Жолдың және әрбір таңбаның ұзындығы келесідей.

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 жолы

Windows жолын жол ретінде көрсеткіңіз келсе, өңделмеген жолды пайдалану пайдалы.

Windows жолдары кері қиғаш сызықтармен бөлінген, сондықтан қалыпты жолды пайдалансаңыз, жолдан келесідей құтылуыңыз керек, бірақ өңделмеген жолды пайдалансаңыз, оны сол күйінде жаза аласыз. Мәндер эквивалентті.
\\

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() көмегімен қалыпты жолдарды өңделмеген жолдарға түрлендіру

Егер сіз қалыпты жолды шығу ретін елемейтін (өшіретін) өңделмеген жолға түрлендіргіңіз келсе, кірістірілген 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 қосылған шикі жолға эквивалентті жолды аламыз.

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

Соңындағы кері қиғаш сызықты ескеріңіз.

Кері қиғаш сызық тырнақшадан кейін бірден қашатындықтан, жолдың соңында кері қиғаш сызықтардың тақ саны болса, қате орын алады. Кері қиғаш сызықтардың жұп саны дұрыс.

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

print(r'\\')
# \\

# print(r'\\\')
# SyntaxError: EOL while scanning string literal
Copied title and URL