繁体   English   中英

如何从文件中删除开头的Unciode字符?

[英]How to strip the leading Unciode characters from a file?

我正在处理数千个xml文件,并且有一些问题文件。

在每种情况下,它们都包含前导Unicode字符,例如C3 AF C2 BB C2 BFEF BB BF等。

在所有情况下,文件仅包含ASCII字符(在标头字节之后),因此不会存在数据丢失将它们转换为ASCII的风险。

我不允许更改磁盘上文件的内容,只能将它们用作脚本的输入。

简单地说,我很乐意将此类文件转换为ASCII(解析所有输入文件,进行一些更改并将其写入输出目录,然后由第二个脚本处理它们)。

我该如何编码? 当我尝试:

with open(filePath, "rb") as file:
    contentOfFile = file.read()

unicodeData = contentOfFile.decode("utf-8")
asciiData = unicodeData.encode("ascii", "ignore")

with open(filePath, 'wt')  as file:
    file.write(asciiData)

我得到一个错误, must be str, not bytes

我也试过

    asciiData = unicodedata.normalize('NFKD', unicodeData).encode('ASCII', 'ignore')

结果相同。 我该如何纠正?

还是有其他方法可以隐藏文件?

...
asciiData = unicodeData.encode("ascii", "ignore")

asciiData是字节对象,因为它已编码。 打开文件时,您需要使用二进制模式而不是文本模式:

with open(filePath, 'wb')  as file:  # <---
    file.write(asciiData)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM