我正在编写一个程序,它接收一个文本文件并生成另一个文本文件,其中: 1瑞典字母格式正确。 2所有非字母的单词都将被删除。 三。所有大写字母都已转换为小写字母。在
这是我的代码:
import string
infile = open("unigram.wfreq","r")
outfile = open("bigram.txt","w")
line = "Start"
while line != "":
line = infile.readline()
wordandcount = line.split()
word = wordandcount[0]
##Fix å ä ö.
## å == √• ä == √§ ö == √∂
if "å" in word or "ä" in word or "ö" in word:
word = word.replace("√•","å")
word = word.replace("√§","ä")
word = word.replace("√∂","ö")
if word.isalpha():
word = word.lower()
outfile.write(word+"\n")
print(line)
这是我的unigram.wordfreq公司文件:
^{pr2}$运行该文件时,出现以下错误:
Traceback (most recent call last):
File "formater.py", line 13, in <module>
line = infile.readline()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 2732-2733: invalid continuation byte
如果我看终端输出的末端,我会看到以下内容:
Omgångsstarten 1
nationssplittring 1
Handtvätten 1
Three 47
domherre 1
http://www.dryden.se 1
Getryggarna 1
mineraloljor 21
如果我在unigram.wordfreq公司我希望在mineraljor后面看到生成错误的单词(对吗?),但我看到了:
Getryggarna 1
mineraloljor 21
MAYHEM 1
avvänjer 1
tilltrasslad 1
EUROPEISKT 1
在mineraloljor
之后,有{
如何解决此错误并继续格式化整个文件?在
如果
föglömma
在示例文件中,并且应该读取föglömma
,但是Python脚本认为它不是UTF-8,那么您在unigram.wfreq
文件中添加了错误的编码。在在某些时候,UTF-8数据被解释为mac roman,然后保存为mac roman。在
通过再次将文件保存到UTF-8,您已经进一步烘焙了以前的错误。在
所以我找到了解决这个问题的简单方法。我用升华文本2打开了我的wfreq文件,在那里我可以用编码utf-8保存它。这就解决了瑞典字母问题。我还将扩展名改为.txt。之后,我再次运行python代码(更改了文件名并删除了åä-part),它运行得很好。在
文件看起来像是用UTF-8编码的,但您使用的是
mac_roman
编码来显示它。这是一个测试:输出:
^{pr2}$要在Python中正确读取文件,请使用以下命令使用正确的编码读取Unicode字符串:
输出:
相关问题 更多 >
编程相关推荐