【问题标题】:Workaround to use a non ascii character to replace an accent character to a non accent使用非 ascii 字符将重音字符替换为非重音字符的解决方法
【发布时间】:2023-04-01 15:05:02
【问题描述】:

我想使用另一种方式将带重音的字符更改为不带重音的字符。例如:将“é”更改为“e” ...等

我必须留在 python 2.7

我使用了一个相当特殊的解释器,它不会在我的代码中使用非 ascii 字符。 显示以下错误:“代码包含非 ascii 字符”

我该如何解决这个问题?

这是我的代码:

import re

chaine = '/lâllôlélûl/fdfd58'
accent = ['é', 'è', 'ê', 'à', 'ù', 'û', 'ç', 'ô', 'î', 'ï', 'â']
no_accent = ['e', 'e', 'e', 'a', 'u', 'u', 'c', 'o', 'i', 'i', 'a']



for i in xrange(len(accent)):
    chaine = chaine.replace(accent[i], no_accent[i])

【问题讨论】:

    标签: python-2.7 non-ascii-characters


    【解决方案1】:

    根据Source Code Encoding

    默认情况下,Python 源文件被视为以 ASCII 编码。要声明默认编码以外的编码,应在文件的第一行添加一个特殊的注释行。语法如下:

    # -*- coding: cp1252 -*-
    

    另一种方式

    # -*- coding: cp1252 -*-
    import unicodedata
    
    chaine = 'çàlaïù'
    
    str_input = unicodedata.normalize('NFKD', unicode(chaine, 'utf-8'))
    print str_input.encode('ASCII', 'ignore')
    print chaine
    

    【讨论】:

    • 我已经测试过了,但它不起作用。事实上,我想将我的“重音”列表转换为非 ascii 字符。因为我认为口译员不太喜欢这种类型的角色。我怎么能改变呢?
    • 我改了答案,用“cp1252”
    • 在那之后,我有这个: Traceback(最近一次调用最后一次):文件“python”,第 0 行 SyntaxError:Unicode 字符串中的编码声明
    • @Taylor08 请删除您的答案并编辑主要问题。我添加了屏幕截图,它可以工作。
    猜你喜欢
    • 2012-11-16
    • 2013-12-28
    • 1970-01-01
    • 2013-08-10
    • 2012-08-02
    • 2016-12-18
    • 2015-11-05
    • 1970-01-01
    相关资源
    最近更新 更多