ฟังก์ชั่นไม่ทำงานครับ

tags:

ผม save ไฟล์เป็นแบบ utf8 ครับ
ถ้าเป็น ascii ธรรมดาไม่มีปัญหาอะไร

# -*- coding: utf-8 -*-
def fRigthString(str="",w=0):
   
    xstr = str.decode("cp874")  #น่าจะผิดบริเวณนี้
    xResult = ""
    xLenStr= len(xstr)
    if xLenStr <> 0 or w <> 0:
        if  w > xLenStr:
            w=xLenStr
        i = xLenStr-1  #start  copy char from rigth to left
        j = 0 #count varible for loop
        while j<w:
            xResult = xstr[i]+xResult
            i=i-1
            j=j+1
       
    return xResult

print fRigthString(u"abcefgegaทดสอบ",4)

kowito2's picture

เคยเจออะไรคล้ายๆ ผิดตรงที่พยายาม decode นั่นแหละครับ แต่ยังหาวิธีไม่ได้

Iowan's picture

right ครับ ไม่ใช่ rigth

anu's picture

xstr = str.decode(“cp874”) #น่าจะผิดบริเวณนี้

ทำไมถึงต้อง decode อีกรอบล่ะครับ ในเมื่อไฟล์มันเป็น utf-8 อยู่แล้ว

ลองเปลี่ยนเป็น xstr = str ก็น่าจะใช้ได้รึเปล่าครับ

bow_der_kleine's picture

ใช่เลยครับ xstr = str หรือให้ง่ายขึ้นไปอีก

def fRigthString(xstr=”“,w=0):

เพราะ str มันเป็น builtin-type ตั้งชื่อตัวแปรแบบนี้ไม่ผิด แต่อันตราย

จากที่อ่านโค้ด ใช้ string-slicing ไม่ง่ายกว่าเหรอครับ เช่น เรียงจากขวาไปซ้าย

xstr = u”abcefgegaทดสอบ”[::-1]

จากขวาไปซ้ายจนถึงตัวที่สี่นับจากหลัง

xstr = u”abcefgegaทดสอบ”[-1:-5:-1]

จากซ้ายไปขวาเริ่มจากตัวที่สี่นับจากหลัง

xstr = u”abcefgegaทดสอบ”[-4:]

BioLawCom.De

preecha13's picture

เป้าหมายคือต้องการสร้างฟังก์ชั่น right(string,ความกว้างที่ต้องการ) เหมือนใน vb6 ครับ จะเอาไปทำเกี่ยวกับการรันรหัสต่างเช่น 00001 อะไรประมาณนี้นะครับ

bow_der_kleine's picture

งั้นประมาณนี้ก็คงได้ครับ

def right(str_in, w=1) : return str_in[-w:]

BioLawCom.De

preecha13's picture

ได้แล้วครับ ขอบคุณครับ

ถามเพิ่มครับ ผมสั่งแบบด้านล่างนี้แล้วมัน error แบบนี้นะครับทำไง
แต่พอไม่ใส่ ก ก็ไม่มีปัญหานะครับ
print (u’000000’+u’ก10’)[-5:] UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\u0e01’ in position 2: ordinal not in range(128)

preecha13's picture

อ้อ แก้ได้แล้วครับทำโดยการ เช่น
print (u’000000’+u’จข20’)[-4:].encode(‘utf-8’)

Site Search

 
Web blognone.com

Poll

User login