UT8问题-有没有办法转换奇怪的字符ä;符合它的德文特征ä;用Python?

UT8问题-有没有办法转换奇怪的字符ä;符合它的德文特征ä;用Python?,python,utf-8,diacritics,Python,Utf 8,Diacritics,我有一个.txt文件,其中应该包含像ä,ö,ß,ü这样的德语Umlauts。但是,这些角色并不是以这样的方式出现的,而是以÷代替ä,以Ã代替Ü等等。发生这种情况是因为.txt文件以ANSI编码存储。现在,当我以SAS(DataStep)或Python(with.read_csv)的形式导入此文件时,这些奇怪的字符会出现在.sas7bat和Python数据框中,而不是像ä、ö、ü、ß这样的适当字符 解决此问题的一个方法是- 在标准记事本中打开文件 按“另存为”,然后出现一个窗口 然后在下拉列表中

我有一个.txt文件,其中应该包含像ä,ö,ß,ü这样的德语Umlauts。但是,这些角色并不是以这样的方式出现的,而是以÷代替ä,以Ã代替Ü等等。发生这种情况是因为.txt文件以ANSI编码存储。现在,当我以SAS(DataStep)或Python(with.read_csv)的形式导入此文件时,这些奇怪的字符会出现在.sas7bat和Python数据框中,而不是像ä、ö、ü、ß这样的适当字符

解决此问题的一个方法是-

  • 在标准记事本中打开文件
  • 按“另存为”,然后出现一个窗口
  • 然后在下拉列表中,将编码更改为UTF-8
  • 现在,当您在SAS或Python中导入文件时,所有内容都已正确导入

    但是,有时我拥有的.txt文件非常大(以GBs为单位),因此我无法打开它们并进行此攻击来解决此问题

    我可以使用.replace()函数,用真实的字符替换这些奇怪的字符,但是可能有一些我不知道的奇怪字符的组合,这就是我希望避免的原因


    是否有任何Python库可以自动将这些奇怪的字符转换为它们的正确字符,如÷被翻译成ä等?

    您是否尝试使用编解码器库

    import codecs
    your_file= codecs.open('your_file.extension','w','encoding_type')
    

    如果文件包含正确的代码点,则只需指定正确的编码。在大多数sane平台上,Python3默认为UTF-8,但是如果您需要代码也在Windows上运行,您可能需要详细说明编码

    打开(文件名为'r',编码为'utf-8')作为f:
    #用f做事
    
    如果文件实际上包含,在一般情况下,没有简单的方法来恢复所有可能的方法来扭曲文本,但是一个常见的错误是假设文本是拉丁语-1,并将其转换为UTF-8,而实际上输入已经是UTF-8。你可以做的是说你想要拉丁语-1,并且可能确保你一读完它就用正确的格式保存它

    打开(文件名为'r',编码为'latin-1')作为inp\
    打开('newfile','w',encoding='utf-8')作为输出:
    对于inp中的行:
    输出写入(行)
    

    图书馆声称能够识别和纠正许多常见的mojibake问题。

    谢谢您的留言。对不起,这没用。我就是这样试的。首先,我阅读了文件并最终编写了它,如图所示,但问题仍然是一样的。您使用的是python 2还是python 3?您好,我使用的是python 3+而不是python 2+,旧版本。