【发布时间】:2018-08-28 11:57:01
【问题描述】:
我有一个需要处理其数据的输入文件。该文件采用 UTF-16 格式,即使其中的每个字符都只是一个标准的 ascii 字符。
我不能更改输入文件,以便它不使用无用的双字节字符来表示 100% 英文单字符数据。我需要在 Windows 上用 python 转换它。 (请不要使用非 python 解决方案,谢谢)。
我希望我的 python 程序作用于这些字符串并输出一个不是双字节的文件。我只想要标准的 ascii 字符串(每个字符一个字节)
我搜索了很多,看到了各种相关的问题,但不是我的。我对无法解决这个看似非常简单的问题和需求感到沮丧。
编辑:这是我要工作的程序。这是荒谬的。必须有更简单的方法。代码中的 chr(10) 引用是因为输入有行,我找不到一种非荒谬的方式来进行简单的 readline/writeline 调用。
with open('Unicode.txt','r') as input:
with open('ASCII.txt','w') as output:
for line in input.readlines():
codelist=[code for code in line.encode('ascii','ignore') if code not in (0,10)]
if codelist:
output.write(''.join([chr(code) for code in codelist]+[chr(10)]))
在阅读了@Mark Ransom 的提示后问题解决了。
【问题讨论】:
-
包括示例代码和您尝试过的任何内容。如果我没记错的话,python 3 中的默认编码是 UTF-8
-
关于在 Python 中将 Unicode 转换为 ASCII(无论是忽略无效字符、替换它们还是抛出错误),已经提出了很多问题。你能解释一下你的问题在重复关闭之前有什么不同吗?
-
@Josh 正如第一行所述,每个字符都只是一个标准的 ascii 字符,因此您已经有了关于无效字符的答案。没有。
-
规范的方式是用UTF-16编码打开输入,用ASCII打开输出,Python会自动转换一切。
-
然后再搜索。你会在docs.python.org/3/howto/unicode.html找到相关的介绍,应该足以回答这个问题了。具体而言,请参阅读取和写入 Unicode 数据。
标签: python-3.x unicode ascii