我正在编写一个接受文本文件并生成另一个文本文件的程序,其中:1.瑞典字母的格式正确。2.删除所有非字母的单词。3.所有大写字母均已转换为小写字母。
这是我的代码:
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文件的示例:
gruppselektion 4
lating 1
Morsing 2
varuhusen 7
FULLT 8
latino 3
mammutslätten 2
föglömma 1
varuhuset 47
livsnjutningen 1
nedtoning 1
运行文件时,出现以下错误:
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文件中找到此段,则希望在Mineraloljor之后看到产生错误的单词(对吗?),但是我看到了:
Getryggarna 1
mineraloljor 21
MAYHEM 1
avvänjer 1
tilltrasslad 1
EUROPEISKT 1
紧随其后的mineraloljor
是MAYHEM
。我不明白为什么这个词会引起错误,这没什么不同!
如何解决此错误并继续格式化整个文件?
因此,我找到了解决此问题的简单方法。我打开了带有崇高文字2的wfreq文件,可以在其中使用utf-8编码保存它。这样就完全解决了瑞典字母的问题。我也将扩展名更改为.txt。之后,我再次运行python代码(更改了文件名并删除了部分内容),并且运行良好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句