Python3将非英语字符转换为英语字符

b5lpy0ml  于 2023-04-08  发布在  Python
关注(0)|答案(2)|浏览(191)

我有一个文本文件,我读取文件,并在一些操作后,我把这些行到另一个文件。但输入文件有一些土耳其字符,如“,Ö,Ü,,,”。我希望这些字符被转换为英语字符,因为当我打开UTF-8编码的文件时,这些字符不会显示。我的代码如下:

for i in range (len(singleLine)):
        if singleLine[i] == "İ":
            singleLine.replace(singleLine[i:i+1],"I")
        if singleLine[i] == "Ü":
            singleLine.replace(singleLine[i:i + 1], "U")
        if singleLine[i] == "Ö":
            singleLine.replace(singleLine[i:i + 1], "O")
        if singleLine[i] == "Ç":
            singleLine.replace(singleLine[i:i + 1], "C")
        if singleLine[i] == "Ş":
            singleLine.replace(singleLine[i:i + 1], "S")
        if singleLine[i] == "Ğ":
            singleLine.replace(singleLine[i:i + 1], "G")
    return singleLine

但是代码不识别输入文件中的这些土耳其字符,并将它们放入输出文件中而不进行任何操作。
识别这些字符的方法是什么?有没有基于ASCII码的搜索或类似的特殊方法?

k2arahey

k2arahey1#

str示例是不可变的,因此str.replace()不会就地操作,而是返回结果。
但是don't do things the hard way

>>> import unidecode
>>> unidecode.unidecode('İ,Ö,Ü,Ş,Ç,Ğ')
'I,O,U,S,C,G'

注意:这不是一个脚本库,但它只能在命令行界面上使用。

vs91vp4v

vs91vp4v2#

如评论中所述:answer for switch case
我使用该方法作为:

choices = {"İ":"I", "ş" : "s"...}
        singleLine = singleLine.replace(singleLine[i:i+1],choices.get(singleLine[i],singleLine[i]))

问题解决了

相关问题