PDA

View Full Version : پردازش متن ساده



arvant
چهارشنبه 09 اسفند 1391, 18:15 عصر
سلام برای یک کلاینت در یک محیط شبیه ساز جنگ رشته ای که از سرور دریافت میشه به صورت

( map ( 3500 3500 ) ) ( self ( 400 53 200 ) ( -1 1 1 ) ( 100 ) ) ( Opponents ( 0 53 0 ) ( -1 1 1 ) ) ( Teammates ( 400 53 200 ) ( -1 1 1 ) ) ( Block ( 0 100 300 ) ) ( fire 100 ) ( graner 100 ) ( hear message )
از سرور دریافت میشه
حالا من برای هر کدوم از این اشیا(map,self,opponnents,temmates,..) یه کلاس دارم که می خوام با مقادیر مربوط به هر کدوم که در پیغام دریافتی درج شده اپدیتش کنم مثل جلوی map نوشته 35000 35000 مشخصات طول و عرض زمینه من می خوام کلاس map کلاس خودم رو با این مقادیر اپدیت کنم .راه خاصی هست؟یا اینکه باید بشینیم یه حلقه کلی بنویسم و جستو و جو کنم خواهشاَ راهنمایی کنید

code_baz
پنج شنبه 10 اسفند 1391, 10:08 صبح
من برای تمرین برنامه نویسی یک کد نوشتم

def find(string,toFind):
c=string.find(toFind)+len(toFind)
Return=""
lst=[chr(i)for i in range(65,91)]+[chr(i)for i in range(97,123)]
while 1:
if not string[c] in ["(",")"]+lst:
Return+=string[c]
if string[c] in lst:break
c+=1
return (Return.rstrip()).lstrip()


فکر کنم به دردت بخوره

code_baz
پنج شنبه 10 اسفند 1391, 10:12 صبح
توضیح
tofind کلمه مورد نظر مثلا map هست
در c طول رشته در آخر map رو میریزیم
بعد توی حلقه اعداد و جاهای خالی مورد نظر رو میریم توی Return , و هر جا که به یک کاراکتر الفبا رسیدیم جلقه تموم میشه

code_baz
پنج شنبه 10 اسفند 1391, 15:24 عصر
اینم کل کد:
کسی با re میتونه نتیجه بگیره؟ من به re زیاد وارد نیستم



def find(string,toFind):
c=string.find(toFind)+len(toFind)
Return=""
while 1:

if ord(string[c])<92 and ord(string[c])>63:
break
if ord(string[c])<124 and ord(string[c])>96:
break
if not string[c] in ["(",")"]:
Return+=string[c]
c+=1
return (Return.rstrip()).lstrip()
def finding():
s="""

( map ( 3500 3500 ) ) ( self ( 400 53 200 ) ( -1 1 1 ) ( 100 ) ) ( Opponents ( 0 53 0 ) ( -1 1 1 ) ) ( Teammates ( 400 53 200 ) ( -1 1 1 ) ) ( Block ( 0 100 300 ) ) ( fire 100 ) ( graner 100 ) ( hear message )

"""
MapList=["map","self","Teammates","graner","Opponents","fire","Block"]
Dict={}
for i in MapList:
Dict.setdefault(i,find(s,i))
return Dict
if __name__=="__main__":
p=finding()
for i in p:
print i," : ",p[i]