Tags:
Forums: 

โปรแกรมแรกของผมใน python ครับ

ต้องการแปลงคำใน dict ไป - กลับ

ผมตัด code ส่วนหนึ่งมาครับ


m = {'1':u'ๅ', '2':u'/', '3':u'-', '4':u'ภ', '5':u'ถ', '6':u'ุ', '7':u'ึ', '8':u'ค', '9':u'ต', '0':u'จ', '-':u'ข', '=':u'ช', 'q':u'ๆ', 'w':u'ไ', 'e':u'ำ'}

def re(k):
for c in m:
if m[c] == k:
return c
return '|'

def con(t):
for c in t:
k = re(c)
print k
if k != '|' and k != '!':
t = t.replace(c, m[k])
return t

#
print conv("ๅ/-ภถุึคต")

ต้องการ 123456789

error :

t = t.replace(c, m[k])
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe0 in position 24: unexpected end of data

ไม่รู้จะแก้ยังไงครับ

มึนเรื่อง encoding มากๆ

ขอบคุณที่แนะนำครับ

Get latest news from Blognone
By: jgods
AndroidUbuntuWindows
on 29 June 2009 - 08:42 #110913

ผมก็ไม่เคยเขียน Python อ้ะนะครับ แต่เอางี้ ลองเอา editplus save as file program นี้
ตอนที่ save as มันจะมีให้เลือก Save Type ให้เลือกเป็น ANSI ดูครับ แล้วลอง compile ใหม่
ว่าได้ไหม หากไม่ได้ คงต้องรอผู้รู้ท่านอื่นมาช่วยอ้ะครับ

By: cwt
AndroidRed Hat
on 29 June 2009 - 08:55 #110916
  1. ข้างบนเป็น unicode (u'something') ข้างล่างก็ต้องใส่ u ด้วยสิครับ
  2. ชื่อ function ข้างล่างผิด (ตั้งว่า con เรียก conv)
  3. ไม่มี header ที่บอกว่า file นี้เป็น unicode python ใหม่ๆ จะบ่นออกมาว่า


    SyntaxError: Non-ASCII character '\xe0' in file /Users/cwt/workspace/test/src/test1.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

code ที่ผมลองแก้แล้วเป็นแบบนี้ครับ

-- coding: utf-8 --

import sys
reload(sys)
sys.setdefaultencoding('utf-8')
m = {'1':u'ๅ', '2':u'/', '3':u'-', '4':u'ภ', '5':u'ถ', '6':u'ุ', '7':u'ึ', '8':u'ค', '9':u'ต', '0':u'จ', '-':u'ข', '=':u'ช', 'q':u'ๆ', 'w':u'ไ', 'e':u'ำ'}
def re(k):
for c in m:
if m[c] == k:
return c
return '|'

def con(t):
for c in t:
k = re(c)
print k
if k != '|' and k != '!':
t = t.replace(c, m[k])
return t
print con(u"ๅ/-ภถุึคต")

output:

1
2
3
4
5
6
7
8
9
ๅ/-ภถุึคต

By: sugree
FounderWriterAndroidBlackberry
on 29 June 2009 - 09:32 #110917

[code type="python"]
#

-- coding: utf8 --

m = {'1':u'ๅ', '2':u'/', '3':u'-', '4':u'ภ', '5':u'ถ', '6':u'ุ', '7':u'ึ', '8':u'ค', '9':u'ต', '0':u'จ', '-':u'ข', '=':u'ช', 'q':u'ๆ', 'w':u'ไ', 'e':u'ำ'}
def re(k):
for c in m:
if m[c] == k:
return c
return '|'

def conv(t):
for c in t:
k = re(c)
print k
if k != '|' and k != '!':
t = t.replace(c, m[k])
return t

print conv(u"ๅ/-ภถุึคต")
[/code]