在Python中将unicode文本转换为单字节ascii

时间:2018-03-19 19:44:52

标签: python-3.x unicode ascii

我有一个输入文件,我需要处理它的数据。该文件是UTF-16,即使其中的每个字符只是一个标准的ascii字符。

我无法更改输入文件,因此它不会使用无用的双字节字符来表示100%的英语单字符数据。我需要在Windows上的python中转换它。 (请不要使用非python解决方案,谢谢)。

我希望我的python程序对这些字符串起作用并输出一个非双字节的文件。我只想要标准的ascii字符串(每个字符一个字节)

我已经google了很多,看到各种相关的问题,但不是我的。我对于无法解决这个看似非常简单的问题和需求感到沮丧。

编辑:这是我开始工作的程序。这很荒谬。必须有一个更简单的方法。代码中的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的提示后,问题解决了。

1 个答案:

答案 0 :(得分:2)

with open('unicode.txt','r',encoding='UTF-16') as input:
    with open('ascii.txt','w',encoding='ascii') as output:
        output.write(input.read())