Tuesday, June 22, 2010

Python дээр тэмдэгт мөр буюу СТРИНГ төрөлтэй ажиллах

  >>> 'hello world'
'hello world' 
>>> 'hello\' world'       # ' \ ' тэмдэгтийн дараах тэмдэгт тэр чигээрээ бичигддэг
"hello' world" 
>>> "hello's world" 
"hello's world" 

Жишээ нь : \\ гэж бичсэн байвал \ тэмдэгт нь өөрөө гэсэн үг юм.
 Энэхүү тэмдэгтийн хэрэглээг өөр олон зүйл дээр харж болох бөгөөд хамгийн чухал гэж хэлж болох regular expression дээрх хэрэглээ юм. Regular expression буюу Regex-н талаар дараах бичлэгтээ оруулах болно.


Олон мөр тэмдэгт өгөгдөл олгох шаардлага гарвал тухайн мөрөө \ тэмдэгтээр төгсгөдөг.
>>> string = "abc\ 
... def\n\ 
... ghi\ 
... lmno\n\ 
... kpl" 
>>> print string 
abcdef 
ghilmno                 # энд ghi\ нь \n аваагүй учир мөр шилжээгүй байна
kpl 

Дээр байгаа \n тэмдэгт нь дангаараа шинэ мөр авах ёстойг заадаг.
Харин утга олгохдоо r үсгийг тавьж өгснөөр яаж утга олгосон яаг тэр харагдаж байсан хэлбэрээрээ өгөгдөл авдаг. Энэхүү r үсэг нь raw стринг буюу ямар нэгэн хөрвүүлэлт (\n – г шинэ мөрөөр солих гэх мэт) хийлгүйгээр шууд бичигддэг.
>>> string = r"abc\ 
... def\n\ 
... ghi\ 
... lmno\n\ 
... kpl" 
>>> print string 
abc\ 
def\n\ 
ghi\ 
lmno\n\ 
kpl 

>>> string = 'Good ' + 'morning'
                      # шууд стринг хооронд нэмж болно
>>> string
'Good morning'
>>> string*3
                                                    # стрингийг үржиж болно
'Good morningGood morningGood morning'
   #үржсэн тоогоор залгагдан бичигдэнэ
>>> 'con'+'cat'
'concat'

Энд стрингийн тухайн нэг элементэд шууд тэмдэгт массив байдлаар хандах боломжтой байдаг.
>>> str = 'new text'
>>> str[0]
'n'
>>> str[5]
'e'
>>> str[7]
't'

Мөн арай өөр байдлаар стрингээс хүссэн хэсгээ салган авах боломжтой.
>>> str[:4]
'new '
>>> str[5:]
'ext'

Энд байгаа [: тэмдэгт эхлэлээс, :] нь төгсгөлөөс тухайн индекс хүртэлхийг заадаг. Харин шууд тухайн хэсгийн утгыг индексээр нь хандах өөрчлөх боломжгүй.
>>> str[:4]='old'
         
Traceback (most recent call last):
  File "", line 1, in
TypeError: 'str' object does not support item assignment

Үүнийг дараах байдлаар өөрчлөх боломжтой.
>>> 'old'+str[3:]
'old text'
              # солих текст нь тухайн хэмжээтэй нь ижил урттай байх албагүй
>>> 'dsdsdsdsds'+str[3:]
'dsdsdsdsds text'

>>> str
'new text'
>>> str[2:50]
  
#тэмдэгтийн уртаас их индексийг шууд төгсгөл хүртэл авна гэж үзнэ
'w text'
#тэмдэгт мөрт хандах индексийг дараах байдлаар өөр оруулахад харгалзах үр #дүнг үзүүлнэ
>>> str[50:]
''
>>> str[5:2]
''
>>> str[-2]
            # сөрөг индекс нь ардаас дугаарлаж авдаг
'x'
>>> str[-1]
't'

Стрингийн уртыг олохдоо len(string) функцыг ашиглана.
>>> len(str)
8

Python дээр Unicode тэмдэгтийг энгийн стринг байдлаар бичиж өгөхөд л болно. 

>>> u'Unicode temdegt'
u'Unicode temdegt'
>>> u'Unicode\u0020temdegt'
u'Unicode temdegt'

Энд зөвхөн \u0000 форматтай тусгай тэмдэгтийг л зөвшөөрдөг бөгөөд өөр байдлаар бичсэн тохиолдолд Unicode тэмдэгт гэж авдаггүй.
>>> u'Unicode\\u0020temdegt'
u'Unicode\\u0020temdegt'

1 comment:

  1. сайхан блог байна. lambda -ийн талаар мэдмээр байна.

    ReplyDelete

Сэтгэгдэл үлдээж байгаад баярлалаа :]