用于将UTF-8转换为ASCII的Python脚本

Nic*_*las 31 python ascii utf-8 character-encoding

我正在尝试在python中编写脚本以将utf-8文件转换为ASCII文件:

#!/usr/bin/env python
# *-* coding: iso-8859-1 *-*

import sys
import os

filePath = "test.lrc"
fichier = open(filePath, "rb")
contentOfFile = fichier.read()
fichier.close()

fichierTemp = open("tempASCII", "w")
fichierTemp.write(contentOfFile.encode("ASCII", 'ignore'))
fichierTemp.close()
Run Code Online (Sandbox Code Playgroud)

当我运行此脚本时,我有以下错误:

在范围序数不(128):UnicodeDecodeError错误:0xef在位置13"ASCII"编解码器不能解码的字节

我认为可以忽略编码方法中的ignore参数的错误.但似乎没有.

我对其他转换方式持开放态度.

Utk*_*glu 52

data="UTF-8 DATA"
udata=data.decode("utf-8")
asciidata=udata.encode("ascii","ignore")
Run Code Online (Sandbox Code Playgroud)

  • 如果您希望将8位编码转换为7位,则应该会出现数据丢失. (42认同)
  • 听起来像数据丢失的坏方法. (14认同)
  • 我忽略了我必须首先解码.它现在工作谢谢.要回答这些问题,我想这样做,因为我的MP3播放器只能显示以ASCII编码的歌词文件. (3认同)

Tob*_*obu 8

UTF-8是ASCII的超集.您的UTF-8文件是ASCII,或者无法无损转换.

  • 我认为他已经意识到这一点,否则他就不会尝试使用"忽略". (11认同)

Ign*_*ams 7

import codecs

 ...

fichier = codecs.open(filePath, "r", encoding="utf-8")

 ...

fichierTemp = codecs.open("tempASCII", "w", encoding="ascii", errors="ignore")
fichierTemp.write(contentOfFile)

 ...
Run Code Online (Sandbox Code Playgroud)