Игнорисање (онемогућавање) излазних секвенци у Питхон-у са необрађеним стринговима

Бусинесс

...',"..."У Питхон-у, ако овим литералима стрингова додате један од следећих знакова, вредност ће постати стринг без проширења излазне секвенце.

  • r
  • R

Корисно када се ради са стринговима који користе много обрнутих косих црта, као што су Виндовс путање и обрасци регуларних израза.
Овде се налазе следеће информације.

  • есцапе секвенца
  • Игноришите (онемогућите) излазне секвенце у необрађеним стринговима
  • Претворите нормални стринг у сирови низ:repr()
  • Обратите пажњу на обрнуту косу црту на крају.

есцапе секвенца

У Питхон-у, знакови који се не могу представити у нормалном стрингу (као што су табулатори и нови редови) описују се помоћу излазних секвенци са обрнутим цртама, слично као у језику Ц. Пример есцапе секвенце је приказан испод.

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

Виндовс путања

Коришћење необрађеног стринга је корисно када желите да представите Виндовс путању као стринг.

Виндовс путање су раздвојене обрнутим цртама, тако да ако користите нормалан стринг, морате да побегнете од путање на следећи начин, али ако користите необрађен стринг, можете га написати какав јесте. Вредности су еквивалентне.
\\

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

Претворите нормалне стрингове у необрађене низове помоћу репр()

Ако желите да конвертујете нормални стринг у необрађени низ игноришући (онемогућујући) излазне секвенце, можете користити уграђену функцију репр().

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

Оно што репр() враћа је стринг који представља објекат такав да има исту вредност као када је прослеђен у евал(), са водећим и завршним знаковима.

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

Користећи исечке, можемо добити стринг еквивалентан сировом низу са прикаченим р.

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