Python3 将非英文字符转换为英文字符
Python3 Converting Non-English Chars to English Chars
我有一个文本文件,我读取文件并在一些操作后将这些行放入另一个文件中。但是输入文件有一些土耳其字符,例如“İ,Ö,Ü,Ş,Ç,Ğ”。我希望将这些字符转换为英文字符,因为当我以 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 码的搜索或类似的东西有什么特殊的方法吗?
str
实例是不可变的,因此 str.replace()
不是就地操作而是 returns 结果。
但是don't do things the hard way.
>>> import unidecode
>>> unidecode.unidecode('İ,Ö,Ü,Ş,Ç,Ğ')
'I,O,U,S,C,G'
如评论中所述:answer for switch case
我将该方法用作:
choices = {"İ":"I", "ş" : "s"...}
singleLine = singleLine.replace(singleLine[i:i+1],choices.get(singleLine[i],singleLine[i]))
解决了
我有一个文本文件,我读取文件并在一些操作后将这些行放入另一个文件中。但是输入文件有一些土耳其字符,例如“İ,Ö,Ü,Ş,Ç,Ğ”。我希望将这些字符转换为英文字符,因为当我以 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 码的搜索或类似的东西有什么特殊的方法吗?
str
实例是不可变的,因此 str.replace()
不是就地操作而是 returns 结果。
但是don't do things the hard way.
>>> import unidecode
>>> unidecode.unidecode('İ,Ö,Ü,Ş,Ç,Ğ')
'I,O,U,S,C,G'
如评论中所述:answer for switch case
我将该方法用作:
choices = {"İ":"I", "ş" : "s"...}
singleLine = singleLine.replace(singleLine[i:i+1],choices.get(singleLine[i],singleLine[i]))
解决了