មិនអើពើ (បិទ) លំដាប់រត់គេចក្នុង Python ជាមួយខ្សែអក្សរឆៅ

អាជីវកម្ម

...',"..."នៅក្នុង Python ប្រសិនបើអ្នកបញ្ចូលព្យញ្ជនៈខ្សែអក្សរទាំងនេះជាមួយនឹងតួអក្សរខាងក្រោមមួយ នោះតម្លៃនឹងក្លាយទៅជាខ្សែអក្សរដោយមិនពង្រីកលំដាប់រត់គេចនោះទេ។

  • r
  • R

មានប្រយោជន៍នៅពេលដោះស្រាយជាមួយខ្សែអក្សរដែលប្រើ backslash ជាច្រើនដូចជាផ្លូវ Windows និងលំនាំកន្សោមធម្មតា។
ព័ត៌មានខាងក្រោមត្រូវបានផ្តល់ជូននៅទីនេះ។

  • លំដាប់រត់គេចខ្លួន
  • មិនអើពើ (បិទ) លំដាប់រត់គេចខ្លួននៅក្នុងខ្សែអក្សរឆៅ
  • បំលែងខ្សែអក្សរធម្មតាទៅជាខ្សែអក្សរឆៅ:repr()
  • ចំណាំសញ្ញាសម្គាល់នៅចុងបញ្ចប់។

លំដាប់រត់គេចខ្លួន

នៅក្នុង Python តួអក្សរដែលមិនអាចត្រូវបានតំណាងនៅក្នុងខ្សែអក្សរធម្មតា (ដូចជាផ្ទាំង និងបន្ទាត់ថ្មី) ត្រូវបានពិពណ៌នាដោយប្រើលំដាប់រត់គេចជាមួយ backslash ស្រដៀងនឹងភាសា C ។ ឧទាហរណ៍នៃលំដាប់រត់គេចត្រូវបានបង្ហាញខាងក្រោម។

  • \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 ត្រូវបានបំបែកដោយ backslashes ដូច្នេះប្រសិនបើអ្នកប្រើ string ធម្មតា អ្នកត្រូវតែគេចចេញពីផ្លូវដូចខាងក្រោម ប៉ុន្តែប្រសិនបើអ្នកប្រើ string ឆៅ អ្នកអាចសរសេរវាដូចធម្មតា។ តម្លៃគឺសមមូល។
\\

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

ចំណាំថាខ្សែអក្សរដែលបញ្ចប់ដោយលេខសេសនៃ backslashes នឹងបណ្តាលឱ្យមានកំហុស ដូចដែលបានពិពណ៌នាខាងក្រោម។ ក្នុង​ករណី​នេះ​គឺ​ត្រូវ​សរសេរ​ខ្សែ​អក្សរ​ជា​ខ្សែ​ធម្មតា ឬ​ភ្ជាប់​ដោយ​សរសេរ​តែ​ចុង​ខ្សែ​ជា​ខ្សែ​ធម្មតា​ប៉ុណ្ណោះ។

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

ចំណាំសញ្ញាសម្គាល់នៅចុងបញ្ចប់។

ដោយសារ backslash គេចចេញពីតួអក្សរដកស្រង់ភ្លាមៗបន្ទាប់ពីវា កំហុសនឹងកើតឡើងប្រសិនបើមានលេខសេសនៃ backslash នៅចុងបញ្ចប់នៃខ្សែអក្សរ។ ចំនួនគូនៃ backslashes គឺយល់ព្រម។

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

print(r'\\')
# \\

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