banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix chuyển đổi chuỗi có dấu sang chuỗi không có dấu trong python  XML
  [Question]   chuyển đổi chuỗi có dấu sang chuỗi không có dấu trong python 29/11/2012 15:32:01 (+0700) | #1 | 271439
[Avatar]
vitcon01
Member

[Minus]    0    [Plus]
Joined: 29/04/2009 11:28:21
Messages: 306
Offline
[Profile] [PM]
Hi mọi người, em có vấn đề trong quá trinh lập trình Python như sau, mong mọi người giup đỡ.
Ví dụ em có chuỗi sau:

s = "anh yêu em nhiều lém"

Giờ em muốn chuyển chuỗi s trên sang không có dâu như sau:

"anh yeu em nhieu lem"

Thì làm thế nào, mong anh chị em ai biết giúp đỡ.

THank you!
JK - JH
()()()
LTKT - LTT
[Up] [Print Copy]
  [Question]   chuyển đổi chuỗi có dấu sang chuỗi không có dấu trong python 30/11/2012 00:12:13 (+0700) | #2 | 271454
cocTocoi
Member

[Minus]    0    [Plus]
Joined: 10/05/2011 12:45:24
Messages: 4
Offline
[Profile] [PM]
Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import re
import sys
import codecs

INTAB = u"aáàảãạâấầẩẫậăắằẳẵặeéèẻẽẹêếềểễệiíìỉĩịoóòỏõọôốồổỗộơớờởỡợuúùủũụưứừửữựyýỳỷỹỵđ"
OUTTAB = "a" * 18 + "e" * 12 + "i" * 6 + "o" * 18 + "u" * 12 + "y" * 6 + "d"

INTAB = INTAB + INTAB.upper()
OUTTAB = OUTTAB + OUTTAB.upper()

r = re.compile("|".join(INTAB))
replaces_dict = dict(zip(INTAB, OUTTAB))


def remove_diacritic(utf8_str):
    return r.sub(lambda m: replaces_dict[m.group(0)], utf8_str)

if __name__ == '__main__':
    fi = codecs.open(sys.argv[1], 'r', 'utf-8')
    fo = codecs.open(sys.argv[2], 'w', 'utf-8')

    loai_dau_unicode = remove_diacritic(fi.read())

#sac            \u0301
#huyen          \u0300
#hoi            \u0309
#nga            \u0303
#nang           \u0323
#['\u0301', '\u0300', '\u0309', '\u0303', '\u0323']
    # dau unicode to hop
    #for i in [unichr(771), unichr(768), unichr(777), unichr(769), unichr(803)]:
            #loai_dau_unicode = loai_dau_unicode.replace(i, '')
    fo.write(loai_dau_unicode)

    fi.close()
    fo.close()
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|