Injorimi (çaktivizimi) i sekuencave të arratisjes në Python me vargje të papërpunuara

biznes

...',"..."Në Python, nëse i parashtesoni këto literale të vargjeve me një nga karakteret e mëposhtme, vlera do të bëhet një varg pa zgjeruar sekuencën e ikjes.

  • r
  • R

E dobishme kur kemi të bëjmë me vargje që përdorin shumë kthesa të kundërta, të tilla si shtigjet e Windows dhe modelet e shprehjes së rregullt.
Informacioni i mëposhtëm jepet këtu.

  • sekuenca e arratisjes
  • Injoroni (çaktivizoni) sekuencat e arratisjes në vargjet e papërpunuara
  • Konvertoni vargun normal në varg të papërpunuar:repr()
  • Vini re vijën e prapme në fund.

sekuenca e arratisjes

Në Python, karakteret që nuk mund të përfaqësohen në një varg normal (të tilla si skedat dhe linjat e reja) përshkruhen duke përdorur sekuencat e arratisjes me kthesa të kundërta, të ngjashme me gjuhën C. Një shembull i një sekuence ikjeje është treguar më poshtë.

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

Injoroni (çaktivizoni) sekuencat e arratisjes në vargjet e papërpunuara

...',"..."Nëse e parashtesoni një varg të tillë fjalë për fjalë me një nga sa vijon, vlera do të bëhet një varg pa zgjeruar sekuencën e ikjes. Një varg i tillë quhet varg i papërpunuar.

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

Nuk ka asnjë lloj të veçantë të quajtur tip vargu i papërpunuar, është thjesht një lloj vargu dhe është i barabartë me një varg normal me një vijë të prapme të paraqitur si më poshtë
\\

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

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

Në një varg normal, një sekuencë ikjeje konsiderohet të jetë një karakter, por në një varg të papërpunuar, vijat e prapme numërohen gjithashtu si karaktere. Gjatësia e vargut dhe çdo karakter është si më poshtë.

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']

Rruga e Windows

Përdorimi i vargut të papërpunuar është i dobishëm kur dëshironi të përfaqësoni një shteg të Windows si një varg.

Shtigjet e Windows janë të ndara me vija të pasme, kështu që nëse përdorni një varg normal, duhet të ikni nga shtegu si më poshtë, por nëse përdorni një varg të papërpunuar, mund ta shkruani ashtu siç është. Vlerat janë ekuivalente.
\\

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

Vini re se një varg që përfundon me një numër tek i pjerrët e prapme do të rezultojë në një gabim, siç përshkruhet më poshtë. Në këtë rast, është e nevojshme të shkruani vargun si një varg normal, ose ta lidhni atë duke shkruar vetëm fundin e vargut si një varg 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

Konvertoni vargjet normale në vargje të papërpunuara me repr()

Nëse dëshironi të konvertoni një varg normal në një varg të papërpunuar duke injoruar (çaktivizuar) sekuencat e ikjes, mund të përdorni funksionin e integruar repr().

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

Ajo që kthen repr() është një varg që përfaqëson një objekt të tillë që ka të njëjtën vlerë si kur iu kalua eval(), me karaktere kryesore dhe pasuese.

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

Duke përdorur feta, mund të marrim një varg ekuivalent me vargun e papërpunuar me r të bashkangjitur.

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

Vini re vijën e prapme në fund.

Meqenëse një vija e prapme i shmanget karakterit të citimit menjëherë pas tij, do të ndodhë një gabim nëse ka një numër tek i kundërta në fund të vargut. Një numër çift i prerjeve të pasme është në rregull.

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

print(r'\\')
# \\

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