亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pyformat.py

?? pyformat.zip包中有兩個(gè)文件夾
?? PY
字號(hào):
#!/usr/bin/python
# -*- coding: utf-8 -*-
# pyformat.py   author: YIN Dian    copyleft 2007   licenced under GPL
# Format plain pinyin text with tone markers into toned pinyin
# version: 20070623
# syllable model: [consonant] + [jieyin] + [vowel(s)] + [terminal] + [suffix]
import sys, os, string, types, fileinput
defaultencoding = 'gbk'
tonemarkset = u'1234'
untonemark  = u'0'
compoundset = u'ue'
delimitrset = u"' \t\n,." # no need to be complete
vowelalphas = u'aoeiu眉錨'
jieyinset   = u'iu眉'
consonants  = (u'b', u'p', u'm', u'f', u'd', u't', u'n', u'l', 
        u'g', u'k', u'h', u'j', u'q', u'x', u'y', 
        u'zh', u'ch', u'sh', u'r', u'z', u'c', u's', u'w',
        # extended
        #u'ng', u'v', u'qh'
        )
terminalsnd = (u'n', u'ng',
        # extended
        #u'm', u'p', u't', u'k', u'q'
        )
suffixes    = (u'r')
TONEATLEFTVOWEL  = 1
TONEATRIGHTVOWEL = 2
TONEATJIEYIN     = 3
tonemarkdefault  = TONEATLEFTVOWEL
tonemarkexceptions = {(0, u'i', u'u', 0, 0): TONEATJIEYIN}
tonetransform = {
    u'a': u'膩謾菐脿',
    u'o': u'艒貿(mào)菕貌',
    u'e': u'膿茅臎貓',
    u'i': u'墨鉚菒矛',
    u'u': u'奴煤菙霉',
    u'眉': u'菛菢菤菧'
}
compoundtrasform = {
    u'uu': u'眉',
    u'ee': u'錨'
}
# computed rules
tonedalphas = u''.join([toned for alpha, toned in tonetransform.items()])
untonetransform = []
for alpha, toned in tonetransform.items():
    untonetransform += [(tonedalpha, alpha) for tonedalpha in toned]
untonetransform = dict(untonetransform)

def showhelp():
    print "\
pyformat.py author: YIN Dian    copyleft 2007   licenced in GPL\n\
Format plain pinyin text with tone markers into toned pinyin\n\
version: 20070623\n\
Usage: pyformat.py filename(s)"

def istonemark(char):
    return char in tonemarkset or char in untonemark

def iscompound(char):
    return char in compoundset

def isdelim(char):
    return char in delimitrset

def istoned(char):
    return char in tonedalphas

def striptone(syllable):
    "return (syllable_without_tone, tone)"
    if not type(syllable) in types.StringTypes:
        raise TypeError, 'Expect string, but %s given' %\
                `type(syllable)`
    result = u''
    tone = 0
    for char in syllable:
        if istoned(char):
            alpha = untonetransform[char]
            tone = tonetransform[alpha].index(char) + 1
            result += alpha
        else:
            result += char
    return result, tone

def splitsyllable(syllable):
    """return (consonant, jieyin, vowels, terminal, suffix)
    requires the input syllable to be stripped of tone mark"""
    if not type(syllable) in types.StringTypes:
        raise TypeError, 'Expect string, but %s given' %\
                `type(syllable)`
    consonant = jieyin = vowels = terminal = suffix = u''
    i = 0
    while i < len(syllable) and not syllable[i] in jieyinset and\
            not syllable[i] in vowelalphas:
        consonant += syllable[i]
        i += 1
    if consonant and not consonant in consonants:
        raise ValueError, "Unrecognized consonant %s" % consonant
    if i < len(syllable) and syllable[i] in jieyinset:
        jieyin = syllable[i]
        i += 1
    j = len(syllable)
    for possiblesuffix in suffixes:
        if len(possiblesuffix) <= j - i and \
            syllable[j-len(possiblesuffix):j] == possiblesuffix:
                suffix = possiblesuffix
                j -= len(possiblesuffix)
                break
    for possibleterm in terminalsnd:
        if len(possibleterm) <= j - i and \
            syllable[j-len(possibleterm):j] == possibleterm:
                terminal = possibleterm
                j -= len(possibleterm)
                break
    vowels = syllable[i:j]
    for char in vowels:
        if not char in vowelalphas:
            raise ValueError, "Unrecognized vowel %s" % vowels
    if jieyin and not vowels:
        jieyin, vowels = u'', jieyin
    return consonant, jieyin, vowels, terminal, suffix

def marktone(syllable, tonemark):
    "mark syllable with tonemark and return the result"
    if not syllable:
        if type(tonemark) in types.StringTypes:
            return tonemark
        else:
            return u''
    else:
        syllable, tone = striptone(syllable)
        #print syllable, tonemark
        if type(tonemark) in types.StringTypes:
            if tonemark in tonemarkset:
                tone = tonemarkset.index(tonemark) + 1
            elif tonemark == untonemark:
                return syllable
        elif not tonemark or not tone:
            return syllable
        consonant, jieyin, vowels, terminal, suffix = \
                splitsyllable(syllable)
        if not vowels:
            raise ValueError, ("No vowel to mark tone %s "+\
                    "on %s") % (`tonemark`, syllable)
        markrule = tonemarkdefault
        for case in tonemarkexceptions.keys():
            if (not case[0] or case[0] == consonant) and\
                (not case[1] or case[1] == jieyin) and\
                (not case[2] or case[2] == vowels) and\
                (not case[3] or case[3] == terminal) and\
                (not case[4] or case[4] == suffix):
                    markrule = tonemarkexceptions[case]
        #print 'markrule= %s' % markrule,
        if markrule == TONEATLEFTVOWEL or not jieyin:
            vowels = tonetransform[vowels[0]][tone-1] + vowels[1:]
        elif markrule == TONEATRIGHTVOWEL:
            vowels = vowels[:-1] + tonetransform[vowels[-1]][tone-1]
        elif markrule == TONEATJIEYIN and jieyin:
            jieyin = tonetransform[jieyin][tone - 1]
        else:
            raise ValueError, ("Don't know how to mark tone %s "+\
                    "on %s") % (`tonemark`, syllable)
        return consonant + jieyin + vowels + terminal + suffix

def makecompound(str):
    "deal with compound input sequence such as uu, ee"
    if not str:
        return u'', False
    changed = 0
    for case in compoundtrasform.keys():
        if len(case) <= len(str) and str[-len(case):] == case:
            str = str[:-len(case)] + compoundtrasform[case]
            changed = True
            break
    return str, changed
    
def isvalid(syllable):
    if not syllable:
        return False
    numtoned = 0
    for char in syllable:
        if istoned(char):
            numtoned += 1
    if numtoned > 1:
        return False
    syllable = striptone(syllable)[0]
    try:
        splitsyllable(syllable)
    except ValueError:
        return False
    return True

def pyformat(str):
    """blah, just format"""
    if type(str) == types.ListType:
        str = u''.join(str)
    if not type(str) in types.StringTypes:
        raise TypeError, 'Must input a string or list of strings, '\
                + 'but you gave %s' % `type(str)`
    result = syllable = oldsyllable = lastchar = u''
    changed = False
    for char in str:
        #print '(',char,syllable,isvalid(syllable),
        if istonemark(char):
            if char == lastchar and changed:
                syllable = oldsyllable + char
                changed = False
                if not isvalid(syllable):
                    result += marktone(oldsyllable, -1)
                    if isvalid(char):
                        syllable = char
                        oldsyllable = u''
                    else:
                        result += char
                        syllable = oldsyllable = u''
            elif isvalid(syllable):
                oldsyllable = syllable
                try:
                    syllable = marktone(syllable, char)
                    changed = True
                except:
                    result += marktone(oldsyllable, -1)
                    if isvalid(char):
                        syllable = char
                        oldsyllable = u''
                    else:
                        result += char
                        syllable = oldsyllable = u''
                    changed = False
            else:
                result += marktone(oldsyllable, -1)
                if isvalid(char):
                    syllable = char
                    oldsyllable = u''
                else:
                    result += char
                    syllable = oldsyllable = u''
                changed = False
        elif iscompound(char):
            if char == lastchar and changed:
                syllable = oldsyllable + char
                changed = False
                if not isvalid(syllable):
                    result += marktone(oldsyllable, -1)
                    if isvalid(char):
                        syllable = char
                        oldsyllable = u''
                    else:
                        result += char
                        syllable = oldsyllable = u''
            else:
                oldsyllable = syllable
                syllable, changed = makecompound(syllable+char)
                if not isvalid(syllable):
                    result += marktone(oldsyllable, -1)
                    if isvalid(char):
                        syllable = char
                        oldsyllable = u''
                    else:
                        result += char
                        syllable = oldsyllable = u''
                    changed = False
        elif isdelim(char):
            if isvalid(syllable):
                syllable = marktone(syllable, -1)
            result += syllable + char
            syllable = oldsyllable = u''
            changed = False
        else:
            if isvalid(syllable + char):
                oldsyllable = syllable
                syllable += char
            else:
                if isvalid(syllable):
                    syllable = marktone(syllable, -1)
                result += syllable
                syllable = char
                oldsyllable = u''
            changed = False
        #print syllable,changed, ')',
        lastchar = char
    result += syllable
    return result

if __name__ == '__main__':
    #for word in unicode(''.join(sys.stdin.readlines())).split():
    #   print word, not isvalid(word) or splitsyllable(word)
    #   print word, striptone(word)
    #
    #for line in sys.stdin.readlines():
    #   line = unicode(line[:-1]).split()
    #   syllable = line[0]
    #   tone = line[1]
    #   print syllable, tone
    #   syllable = marktone(syllable, tone)
    #   print syllable, splitsyllable(striptone(syllable)[0]),
    #   print striptone(syllable)[1]
    #
    if len(sys.argv) > 1:
        for line in fileinput.input():
            if line[:-1] == '\n':
                 del line[:-1]
            print pyformat(unicode(line,
                defaultencoding)).encode(defaultencoding)
    else:
        showhelp()
        #print tonetransform
        #print tonedalphas
        #print untonetransform

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人tv网| 日韩一区二区免费在线电影| 亚洲成人免费在线观看| 久久久久久久久岛国免费| 91在线视频免费观看| 青青青爽久久午夜综合久久午夜| 国产精品久久久久久久久图文区 | 尤物在线观看一区| 国产午夜三级一区二区三| 欧美精品aⅴ在线视频| 大胆欧美人体老妇| 久久电影网电视剧免费观看| 亚洲一级在线观看| 综合分类小说区另类春色亚洲小说欧美| 精品国产乱码久久久久久免费| 欧美在线你懂的| 99久久免费视频.com| 国产乱码精品一区二区三区忘忧草| 视频一区二区欧美| 亚洲一区二区欧美| 亚洲最快最全在线视频| 欧美午夜精品免费| 欧美另类久久久品| 国产一区二区三区综合| 亚洲已满18点击进入久久| 久久综合给合久久狠狠狠97色69| 99久久国产综合色|国产精品| 奇米色一区二区三区四区| 亚洲免费观看高清完整版在线观看熊 | 成人教育av在线| 六月丁香婷婷久久| 亚洲成人免费观看| 亚洲免费色视频| 国产午夜精品福利| 精品区一区二区| 日韩视频免费直播| 精品日产卡一卡二卡麻豆| 日韩美一区二区三区| 欧美电影免费观看高清完整版在 | 国产精品初高中害羞小美女文| 日韩精品专区在线影院重磅| 欧美一区二区三区性视频| 欧美男生操女生| 日韩一区二区三区电影| 日韩一区二区不卡| 欧美精品一区二区三区高清aⅴ| 91精品在线免费观看| 欧美日韩在线不卡| 欧美日韩国产大片| 欧美一区二区三区思思人| 欧美一级高清片在线观看| 欧美日韩一区二区在线观看| 欧美老肥妇做.爰bbww| 91精品欧美福利在线观看| 日韩欧美不卡在线观看视频| 337p粉嫩大胆色噜噜噜噜亚洲| 国产亚洲制服色| 中文字幕一区二区三区四区| 亚洲一区二区三区四区五区黄| 五月激情六月综合| 久久国产夜色精品鲁鲁99| 国产盗摄女厕一区二区三区| 不卡的av中国片| 欧美丝袜自拍制服另类| 欧美大黄免费观看| 中文字幕高清一区| 亚洲自拍偷拍图区| 亚洲一区成人在线| 紧缚捆绑精品一区二区| 91在线免费视频观看| 亚洲免费在线视频一区 二区| 91亚洲男人天堂| 成av人片一区二区| 麻豆91在线观看| 韩国v欧美v亚洲v日本v| 国产精品18久久久久久久久 | 亚洲成人福利片| 亚洲va韩国va欧美va| 蜜臀av一区二区| 国产剧情一区二区| 91丝袜美腿高跟国产极品老师| 欧美日本国产视频| 日本一区二区三区四区| 亚洲一区二区三区四区在线观看| 国产一区二区三区久久久| 色综合咪咪久久| 欧美精品一区二| 亚洲国产精品一区二区www在线| 国产在线播放一区二区三区 | 日本一区二区在线不卡| 亚洲成a人片在线观看中文| 国产高清亚洲一区| 欧美日韩一区二区三区在线| 国产欧美日韩在线看| 亚洲成精国产精品女| 懂色一区二区三区免费观看| 69堂国产成人免费视频| 国产精品久久午夜| 免费成人结看片| 在线观看国产一区二区| 国产日韩欧美精品电影三级在线| 亚洲不卡一区二区三区| 成人激情综合网站| 久久一日本道色综合| 午夜一区二区三区视频| av电影天堂一区二区在线 | 久久久久久亚洲综合影院红桃| 亚洲一区二区四区蜜桃| jizz一区二区| 久久久久久夜精品精品免费| 美女一区二区三区在线观看| 日本丶国产丶欧美色综合| 国产欧美一区二区精品秋霞影院| 丝袜亚洲另类欧美综合| 91久久精品一区二区三| 国产精品久线在线观看| 国产一区二区在线视频| 精品三级在线看| 日本亚洲三级在线| 欧美日韩激情一区二区三区| 亚洲视频网在线直播| 成人爱爱电影网址| 国产无遮挡一区二区三区毛片日本| 日韩高清不卡一区二区三区| 欧美日韩一级视频| 亚洲乱码国产乱码精品精可以看| 国产成人激情av| 久久久久久久精| 国产在线精品视频| 精品国产伦一区二区三区观看体验| 视频一区视频二区中文字幕| 欧美三级乱人伦电影| 亚洲午夜免费视频| 欧美三级欧美一级| 婷婷丁香久久五月婷婷| 欧美精品丝袜中出| 日本在线播放一区二区三区| 69精品人人人人| 蜜臀久久99精品久久久画质超高清| 在线电影欧美成精品| 三级一区在线视频先锋| 欧美一区午夜精品| 老司机免费视频一区二区| 精品播放一区二区| 国产精品一区二区果冻传媒| 国产精品久久久久影院色老大| 99久久综合国产精品| 亚洲精品国产品国语在线app| 在线观看亚洲精品| 日韩精品国产欧美| 久久夜色精品国产欧美乱极品| 国产精品一区二区果冻传媒| 中文字幕中文字幕中文字幕亚洲无线| 91网站在线观看视频| 亚洲一卡二卡三卡四卡无卡久久| 6080午夜不卡| 国产一区二区精品久久91| 国产日韩v精品一区二区| 99久久精品情趣| 亚洲va天堂va国产va久| 欧美第一区第二区| 国产不卡高清在线观看视频| 中文字幕一区在线观看视频| 欧美日韩高清不卡| 国产老女人精品毛片久久| 视频一区二区国产| 久久久一区二区三区| 97久久久精品综合88久久| 亚洲综合在线五月| 精品日韩成人av| 成人午夜视频福利| 亚洲自拍偷拍网站| 日韩你懂的电影在线观看| 国产激情一区二区三区桃花岛亚洲| 国产精品色婷婷久久58| 欧美亚洲动漫精品| 韩国av一区二区三区在线观看| 成人欧美一区二区三区黑人麻豆| 欧美性猛交xxxxxx富婆| 韩国三级在线一区| 亚洲欧洲中文日韩久久av乱码| 欧美一二区视频| 97se亚洲国产综合自在线不卡| 日韩电影一二三区| 国产喷白浆一区二区三区| 欧美精品一卡两卡| 波多野结衣视频一区| 日韩不卡免费视频| 中文字幕一区二区三区视频| 欧美电影免费提供在线观看| 色综合久久久久综合| 精品一区二区三区av| 亚洲综合成人网| 天天色图综合网| 国产精品网站在线| 91精品国产综合久久婷婷香蕉| 成人app网站| 国产在线播放一区三区四| 午夜伊人狠狠久久| 亚洲欧洲三级电影|