Labels

Tuesday, February 9, 2010

Жагсаалтыг залгах болон тэмдэгт мөрийг салгах



Бид жагсаалтыг түлхүүр-утгыг key = value гэсэн тэмдэгтэн жагсаалт болгож чадна үүнийгээ нэгтгэхийг хүсвэл дурын тэмдэгт жагсаалтыг дан тэмдэг болохын тулд бид join методыг ашиглах хэрэгтэй.
Энд залгах жишээ болгож бид buildConnectionString функцыг авч үзье:
return “;”.join([“%s=%s”
% (k,v) for k,v in params.items()])
Үүнийг тайлбарлавал params жагсаалтын key, value дахь утгыг давталтаар авч “%s=%s” байдлаар тэмдэгтэн жагсаалт үүсгэж байна. Үүний дараа уг жагсаалтаа join метод ашиглаж залгахдаа дунд нь “;” тэмдэгтийг оруулж залгаж байна.

Join нь зөвхөн тэмдэгтэн жагсаалтуудыг л нэгтгэнэ. Бусад үед алдаа буцаамо

За энэ бол жишээ нь:
>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
>>> ["%s=%s" % (k, v) for k, v in params.items()]
['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
>>> ";".join(["%s=%s" % (k, v) for k, v in params.items()])
'server=mpilgrim;uid=sa;database=master;pwd=secret'
Ойлгохгүй бол жишээг ажиллуулаад үзчихэд ер нь гадарлачих байхаа.

За та бүхэн залгачихсан юм чинь одоо яаж салгах вэ гэж сонирхох байх. Тэгвэл салгадаг нь split гэж метод байнаа.
>>> li = ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
>>> s = ";".join(li)
>>> s
'server=mpilgrim;uid=sa;database=master;pwd=secret'
>>> s.split(";")
['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
>>> s.split(";", 1)
['server=mpilgrim', 'uid=sa;database=master;pwd=secret']
split нь join-ны урвуу үйлдэл бөгөөд тэмдэгт мөрийг хувааж тэмдэгтэн жагсаалт үүсгэнэ. (“;”) нь ямар тэмдэг таарвал таслах вэ гэдгийг зааж байна.

Split заавал зааж өгөх шаардлагагүй утга авах бөгөөд энэ нь тэмдэгт мөрийг хэд хуваахыг заана.

anystring.split(delimiter, 1) энийг тэмдэгт мөрөөс дэд тэмдэгт мөр хайхад ашиглаж болно.
Тэгвэл энд буцах жагсаалт нь эхний мөр нь дэд тэмдэгт мөрийн өмнө байгаа тэмдэгт мөр, дараах хайж буй тэмдэгт мөрийн дараа залгагдаж байсан тэмдэгт мөр болно.

Хэхэ орчуулах гэж бантангийн нь хутгахчихлаадаа.

No comments: