String Manipulation in Python

2001 views Oct 30, 2024

ကျွန်တေ်ာတို့ string manipulation ကို ဒီနေ့တူတူလေ့လာကြပါမယ်။string တွေကတော့ စာသားတွေဖြစ်လို့ ကျွန်တော်လို့လိုချင်တဲ့တိုင်းအသုံးချနိုင်တဲ့အခါကျ အရမ်းအသုံးဝင်ပါတယ်။string ဆိုတာ နေရာတိုင်းမှာရှိနေတာပါ အခုဖတ်နေတဲ့စာတွေကိုပဲကြည့်ပါ။

အဲ့တော့ကျွန်တော်တို့စကြတော့မှာမို့ ctrl+alt+t ကိုသုံးပြီး  terminal ကိုဖွင့်ပါ python လို့ရိုက်လိုက်ပါ။

pyrobocity@pyrobocity:~$ workon pyrobocity
(pyrobocity) pyrobocity@pyrobocity:~$ python
Python 3.6.5 (default, Apr  1 2018, 05:46:30) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

ကျွန်တော်တော့ virtualenv ကိုသုံးပါတယ်။ဘာကြောင့်သုံးတာလဲဆို အရင်ပို့စ်တွေမှာပြန်ဖတ်ပေးပါ။python version 3.6.5 ကိုသုံးထားတာတွေ့မှာပါ။

Operators +,*,in

>>> name1 = "pyrobocity"
>>> name2 = "manipulation"
>>> name1+name2
'pyrobocitymanipulation'
>>> name1*2
'pyrobocitypyrobocity'
>>> name1*3
'pyrobocitypyrobocitypyrobocity'
>>> if 'p' in name1:
...     print('exist')
... 
exist
>>> for i in name1:
...     print(i)
... 
p
y
r
o
b
o
c
i
t
y
>>> 

ကျွန်တေ်ာတို့ + ကိုသုံးရင် string နှစ်ခုကိုပေါင်းပေးသွားပြီး * ကတော့ မြှောက်ပေးတာမို့ နောက်ထပ် အရည်အတွက်နဲ့ထွက်လာပါတယ်။in ကတော့ string ထဲကနေ တစ်လုံးချင်းယူတာနဲ့ string ထဲပါမပါစစ်တဲ့နေရတွေမှာသုံးပါတယ်။in ရဲ့ ပြောင်းပြန်ဖြစ်တဲ့ not in ကတော့ ကိုယ့်ဘာ့သာစမ်းသုံးနိုင်ပြီး သဘောပေါက်နေပြီလို့ယုံပါတယ်။
Raw String Vs String

ကျွန်တော်တို့ raw string နဲ့ string ကိုကြည့်မယ်ဆို ဘာကွာလဲဆိုတော့ escape လုပ်ပေးတယ့် character တွေဆိုတာရှိပါတယ် ဥပမာ ‘\n’ ဆိုတစ်ကြောင်းဆင်ပေးတာမျိုးပါ။အောက်မှာကြည့်ပါ။

Escape character            print

\’                                   Single Quote

\”                                  Double Quote

\t                                  Tab

\n                                 Newline (line break)

\\                                 Backslas

အဲ့တော့အပေါ်ကတိုင်းကြည့်မယ်ဆို ကျွန်တော်တို့ print လုပ်လိုက်တဲ့အခါကျ တစ်ကြောင်းဆင်းသွားတာတွေ့ရမှာပါ။

>>> print("hey,\npyrobocity")
hey,
pyrobocity
>>>

ကျွန်တော်တို့ ဒါမျိုးက ရိုးရိုးstring မို့ကျွန်တော်တို့ escape character တွေကို အလုပ်လုပ်စေပါတယ်။အဲ့တော့ကျွန်ေ်တာ်တို့ raw string အနေနဲ့သုံးချင်တယ်ဆို r လေးထည့်ပေးရပါတယ်။

>>> print(r"hey,\npyrobocity")
hey,\npyrobocity
>>> 

Built-in String Functions

Function           Description

chr()        Converts an integer to a character

ord()        Converts a character to an integer

len()        Returns the length of a string

str()        Returns a string representation of an object

အဲ့တော့ကျွန်တော်တို့ chr() ကတော့ ascii တွေကို character ပြောင်းစေပါတယ်။ဥပမာ a က ascii တန်ဖိုး 97ပါ။asciitable ကိုသွားကြည့်နိုင်ပါတယ်။

>>> chr(97)
'a'
>>> ord('a')
97
>>> len('abcd')
4
>>> str(123)
'123'

ကျွန်တော်တို့ord ကတော့ စောစောကရဲ့ပြောင်းပြန်ပါ။len ကတော့ string ဘယ်နှစ်လုံးရှိလဲကိုကြည့်တာဖြစ်ပြီး integerတို့ တခြား datatype ကနေ string ကိုချိန်းချင်ရင် str() ကိုသုံးပါတယ်။


Index and Slice

ကျွန်တော်တို့ လိုချင်တဲ့ဟာကိုပဲ ဆွထုတ်ယူတာမျိုးမှာသုံးပါတယ်။အောက်က example ကိုကြည့်ရင်ပိုနားလည်နိုင်ပါတယ်။

>>> hello = "Hello World"
>>> hello[0] #indexing
'H'
>>> hello[0:1]
'H'
>>> hello[0:2]
'He'
>>> hello[0:3]
'Hel'
>>> hello[2:3]
'l'
>>> hello[:-1]
'Hello Worl'
>>> hello[-1]
'd'
>>>

ကျွန်တော်တု့ိအခန်းနံပါတ်ပုံစံနဲ့ ယူတာကိုတော့ indexing လု့ိခေါ်ပါတယ်။slice ကတော့ range နဲ့ယူတာပါ။index ကိုနားလည်ရင် လွယ်ပါတယ်။ကျွန်တော်တို့ zeroကနေအမြဲစပြီး len(string)-1 ကတော့အမြဲအဆုံးဖြစ်ပါတယ်။အဲ့ထဲမှာ range နဲ့ပြန်ယူတာကျတော့ အစကိန်းလေးကနေတိုးတယ့်ပုံစံမျိုးပါပဲ။
Useful Methods

upper,lower,isupper,islower

>>> greeting = "Welcome to pyrobocity"
>>> greeting.upper()
'WELCOME TO PYROBOCITY'
>>> greeting.lower()
'welcome to pyrobocity'
>>> greeting.isupper()
False
>>> greeting.islower()
False
>>> lower_greeting = greeting.lower()
>>> lower_greeting.islower()
True
>>> title = "String Manipulation In Python"
>>> title.istitle()
True
>>> 

ကျွန်တော်တို့ဒီမှာ upper ကတော့ စာလုံးတွေအကုန်ကြီးစေပြီး lower ကတော့ စာလုံးအကုန်သေးစေပါတယ်။is တွေကတော့ အကုန်လုံးကအကြီးလားအသေးလားစစ်တာပါ။title တွေရဲ့ သဘောတရားအရ အစစာလုံးတွေကြီးပါတယ်။အဲ့တာကြောင့်မို့ True ပြန်တာပါ။

isalpha,isalnum,isdecimal,isspace

>>> greeting1 ="hellotesting123"
>>> space = " "
>>> greeting1.isalpha()
False
>>> greeting1.isalnum()
True
>>> greeting1.isdecimal()
False
>>> '123'.isdecimal()
True
>>> space.isspace()
True
>>> 

အဲ့တော့ကျွန်တော်တို့ isalpha က letter တွေချည်းပဲပါတာမျိုးနဲ့ blank မဖြစ်မှ true ဖြစ်တာပါ။isalnum ကတော့ letter and number and not blank ပါ။isspace နဲ့ isdecimal ကတော့နားလည်မယ်ထင်ပါတယ်။

ကျွန်တော်တို့အောက်က function လေးကိုကြည့်ကြည့်ပါ။number တွေပဲရွေးထုတ်ပေးတဲ့ function လေးရေးကြည့်ရအောင်။

>>> def findNumbers(text):
...     for i in text:
...             if i.isdecimal():
...                     yield i
...
>>> for number in findNumbers(greeting):
...     print(number)
... 
1
2
3
>>>

isdecimalရဲ့အသုံးဝင်ပုံကိုရှင်းပြချင်လို့ရေးပြတာပါ။တကယ်တမ်းမရေးသင့်တဲ့ပုံစံပါ numbers ရှာချင်ယုံနဲ့အဲ့လိုအရှည်ကြီးရေးတာ။

startswith and endswith methods

>>> 'Welcome to pyrobocity'.startswith('Welcome')
True
>>> 'Welcome to pyrobocity'.endswith('Welcome')
False
>>> 'Welcome to pyrobocity'.endswith('pyrobocity')
True
>>> 

အစကဘာနဲ့စလဲနဲ့ အဆုံးဘာနဲ့ဆုံးလဲကို စစ်ရင်သုံးပါတယ်။ဥပမာ image file တွေပဲလိုချင်ရင် jpgတို့ png တို့ကိုပဲ ရွေးလိုချင်တဲ့နေရာမျိုးမှာ endswith နဲ့စစ်ကြပါတယ်။


Join and Split

>>> hello = ["my","name","is","si thu phyo"]
>>> "-".join(hello)
'my-name-is-si thu phyo'
>>> hello = "data1,data2,data3"
>>> hello.split(",")
['data1', 'data2', 'data3']
>>> 

ကျွန်တော်တို့အပေါ်ကတိုင်းကြည့်မယ်ဆို တစ်ခုခုကို ပေါင်းချင်တယ်ဆို joinကိုသုံးပါတယ်။split() အထဲမှာတော့ ကိုခွဲထုတ်ချင်တဲ့ ဟာလေးကိုထည့်ပြီး သုံးယုံပါပဲ။ဘာမှမပါဘူးဆိုအကုန်လုံးကိုခွဲထုတ်မှာပါ။စမ်းကြည့်ပါ။
Removing spaces

strip(),lstrip(),rstrip()

>>> hello = "            hello           "
>>> hello.strip()
'hello'
>>> hello.lstrip()
'hello           '
>>> hello.rstrip()
'            hello'
>>> 

ကျွန်တော်တို့ မလိုအပ်တဲ့ space တွေဖျက်ဖို့တွက်သုံးပါတယ်။strip()ကတော့ ဘေးနှစ်ဖက်လုံးကဖျက်ပြီး lstripက ဘယ်ဖျက်ပါတယ်။rstrip ကတော့ညာဘက်ကဖျက်ပေးပါတယ်။အားလုံးကိုကျေးဇူးတင်ပါတယ်။