Kupuuza (kulemaza) mlolongo wa kutoroka kwenye Python na kamba mbichi

Biashara

...',"..."Kwenye Python, ukiweka kiambishi awali cha mfuatano huu na mojawapo ya herufi zifuatazo, thamani itakuwa kamba bila kupanua mlolongo wa kutoroka.

  • r
  • R

Inatumika wakati wa kushughulika na mifuatano inayotumia mikwaruzo mingi ya nyuma, kama vile njia za Windows na mifumo ya kawaida ya kujieleza.
Habari ifuatayo imetolewa hapa.

  • mlolongo wa kutoroka
  • Puuza (lemaza) mifuatano ya kuepuka katika mifuatano mbichi
  • Badilisha mfuatano wa kawaida kuwa mfuatano mbichi:repr()
  • Kumbuka kurudi nyuma mwishoni.

mlolongo wa kutoroka

Katika Python, herufi ambazo haziwezi kuwakilishwa katika mfuatano wa kawaida (kama vile vichupo na mistari mipya) hufafanuliwa kwa kutumia mfuatano wa kutoroka na mikwaruzo, sawa na lugha ya C. Mfano wa mlolongo wa kutoroka umeonyeshwa hapa chini.

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

Puuza (lemaza) mifuatano ya kuepuka katika mifuatano mbichi

...',"..."Ukiweka kiambishi awali mfuatano huo halisi na mojawapo ya yafuatayo, thamani itakuwa mfuatano bila kupanua mfuatano wa kutoroka. Kamba kama hiyo inaitwa kamba mbichi.

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

Hakuna aina maalum inayoitwa aina ya kamba mbichi, ni aina ya kamba tu na ni sawa na kamba ya kawaida iliyo na mkwaruzo unaowakilishwa kama ifuatavyo.
\\

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

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

Katika kamba ya kawaida, mlolongo wa kutoroka unachukuliwa kuwa tabia moja, lakini katika kamba mbichi, backslashs pia huhesabiwa kuwa wahusika. Urefu wa kamba na kila herufi ni kama ifuatavyo.

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

Njia ya Windows

Kutumia kamba mbichi ni muhimu unapotaka kuwakilisha njia ya Windows kama kamba.

Njia za Windows zimetenganishwa na kurudi nyuma, kwa hivyo ikiwa unatumia kamba ya kawaida, lazima uepuke njia kama ifuatavyo, lakini ikiwa unatumia kamba mbichi, unaweza kuiandika kama ilivyo. Maadili ni sawa.
\\

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

Kumbuka kuwa mfuatano unaoishia na idadi isiyo ya kawaida ya mikwaju ya nyuma itasababisha hitilafu, kama ilivyoelezwa hapa chini. Katika kesi hii, ni muhimu kuandika kamba kama kamba ya kawaida, au kuiunganisha kwa kuandika tu mwisho wa kamba kama kamba ya kawaida.

path2 = 'C:\\Windows\\system32\\'
# rpath2 = r'C:\Windows\system32\'
# SyntaxError: EOL while scanning string literal
rpath2 = r'C:\Windows\system32' + '\\'
print(path2 == rpath2)
# True

Badilisha nyuzi za kawaida kuwa nyuzi mbichi na repr()

Ikiwa unataka kubadilisha mfuatano wa kawaida kuwa mfuatano mbichi wa kupuuza (kulemaza) mlolongo wa kutoroka, unaweza kutumia kitendakazi kilichojengewa ndani repr().

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

Nini repr() inarudi ni kamba inayowakilisha kitu kiasi kwamba ina thamani sawa na wakati ilipitishwa kwa eval(), ikiwa na herufi zinazoongoza na zinazofuata.

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

Kwa kutumia vipande, tunaweza kupata kamba sawa na kamba mbichi iliyoambatanishwa na 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

Kumbuka kurudi nyuma mwishoni.

Kwa kuwa backslash huepuka tabia ya kunukuu mara baada yake, hitilafu itatokea ikiwa kuna idadi isiyo ya kawaida ya backslash mwishoni mwa kamba. Idadi hata ya mikwaruzo ni sawa.

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

print(r'\\')
# \\

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