โปรแกรมแรกของผมใน 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("ๅ/-ภถุึคต")
error :
t = t.replace(c, m[k])
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe0 in position 24: unexpected end of data
ไม่รู้จะแก้ยังไงครับ
มึนเรื่อง encoding มากๆ
ขอบคุณที่แนะนำครับ
ผมก็ไม่เคยเขียน Python อ้ะนะครับ แต่เอางี้ ลองเอา editplus save as file program นี้
ตอนที่ save as มันจะมีให้เลือก Save Type ให้เลือกเป็น ANSI ดูครับ แล้วลอง compile ใหม่
ว่าได้ไหม หากไม่ได้ คงต้องรอผู้รู้ท่านอื่นมาช่วยอ้ะครับ
ไม่มี 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
ๅ/-ภถุึคต
[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]