我有一个.txt文件,其中应包含ä,ö,ß,ü之类的德国Umlaut。但是,这些字符并没有出现,而是出现了¤而不是ä,Ã而不是Ü,以此类推。这是因为.txt文件以ANSI编码存储。现在,当我在SAS(DataStep)或Python(带有.read_csv)中导入具有相应列作为字符串的此文件时,这些奇怪的字符会原样出现在.sas7bat和Python DataFrame中,而不是像ä这样的正确字符。 ,ö,ü,ß。
要解决此问题的解决方法是-
现在,当您使用SAS或Python导入文件时,一切都将正确导入。
但是,有时我拥有的.txt文件很大(以GB为单位),因此我无法打开它们并进行破解以解决此问题。
我可以使用.replace()函数,用真实的字符替换这些奇怪的字符,但是可能会有一些我不知道的奇怪字符的组合,这就是为什么我希望避免这种情况。
是否有任何Python库可以自动将这些奇怪的字符转换为适当的字符-就像¤被转换为ä等等?
答案 0 :(得分:2)
您尝试使用编解码器库吗?
import codecs
your_file= codecs.open('your_file.extension','w','encoding_type')
答案 1 :(得分:0)
如果文件包含正确的代码点,您只需指定正确的编码。 Python 3 在大多数正常平台上默认为 UTF-8,但如果您需要代码也能在 Windows 上运行,您可能需要拼出编码。
with open(filename, 'r', encoding='utf-8') as f:
# do things with f
如果文件实际上包含 mojibake,一般情况下没有简单的方法可以还原所有可能的方式来搞砸文本,但一个常见的错误是假设文本是 Latin-1 并将其转换为 UTF- 8 而实际上输入已经是 UTF-8。然后你可以做的是说你想要Latin-1,并且可能确保你在阅读后立即以正确的格式保存它。
with open(filename, 'r', encoding='latin-1') as inp, \
open('newfile', 'w', encoding='utf-8') as outp:
for line in inp:
outp.write(line)
ftfy 库声称能够识别和纠正一些常见的 mojibake 问题。