Python2.7:删除<str>中的重音符号仍然有效

2024-10-02 02:28:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我通过websocket连接接收str数据,并尝试去除重音符号(以及降低文本/将“”转换为“-”…)

而我,即使在这里被问了几百个问题并得到了回答,我仍然没有做到。在

下面是尝试执行此操作的代码部分,解析为要翻译的文本[4][7:]

    if parsed[4][:6]=="!strat":
        shiftedtxt=''
        txt=parsed[4][7:].lower().decode('unicode-escape')
        hope=''.join((c for c in unicodedata.normalize('NFD', txt) if unicodedata.category(c) != 'Mn'))
        for i in hope:
            if i==' ':
                shiftedtxt+='-'
            else:
                shiftedtxt+=i
        ws.send(room+"|http://pokestrat.com/fiche_pokemon/"+shiftedtxt+".php")

我通常会把“Ténéfix”翻译成“tenefix”。在

根据这个网站上的答案,我使用

^{2}$

方法。在

逐步尝试时:

'éô'.decode('unicode-escape')

收益率

u'\xe9\xf4'

以及

>>> s=u'\xe9\xf4'
>>> ''.join((c for c in unicodedata.normalize('NFD', s) if     unicodedata.category(c) != 'Mn'))

收益率

u'eo'

因此,事情应该。。工作?但他们没有。 例如,“ténéfix”返回“tA©nA©fix”,我无法解释。 为什么?在

编辑:以下是完整代码:http://pastebin.com/aJ1Rk1pV


Tags: 代码in文本txtforifunicodeparsed
1条回答
网友
1楼 · 发布于 2024-10-02 02:28:38
txt=parsed[4][7:].lower().decode('unicode-escape')

确实要将提交的文本的一部分解析为Python unicode字符串文本吗?这似乎不太可能。!strat Ténéfix不包含任何Python字符串转义符(如\uNNNN\n等)。在

根据tA©nA©fix判断,您接收的是UTF-8编码的字节,但您将它们解码为ISO-8859-1,这是unicode-escape的直通编码。相反,请尝试:

^{pr2}$

在将字节序列转换为Unicode文本后,需要使用小写。在

When trying step by step: 'éô'.decode('unicode-escape') yields u'\xe9\xf4'

要实现这一点,您的终端必须将字符éô作为ISO-8859-1(或类似的Windows代码页1252)发送。这与websocket提供的UTF-8编码不同,所以结果不同。在

相关问题 更多 >

    热门问题