โปรแกรมแรกของผมใน 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 มากๆ
ขอบคุณที่แนะนำครับ
on
ผมก็ไม่เค
jgods Mon, 29/06/2009 - 08:42
ผมก็ไม่เคยเขียน Python อ้ะนะครับ แต่เอางี้ ลองเอา editplus save as file program นี้
ตอนที่ save as มันจะมีให้เลือก Save Type ให้เลือกเป็น ANSI ดูครับ แล้วลอง compile ใหม่
ว่าได้ไหม หากไม่ได้ คงต้องรอผู้รู้ท่านอื่นมาช่วยอ้ะครับ
ข้างบนเป็
cwt Mon, 29/06/2009 - 08:55
ข้างบนเป็น unicode (u'something') ข้างล่างก็ต้องใส่ u ด้วยสิครับ
ชื่อ function ข้างล่างผิด (ตั้งว่า con เรียก conv)
ไม่มี 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
ๅ/-ภถุึคต
# # -*- coding: utf8 -*- m
sugree Mon, 29/06/2009 - 09:32
[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]