python errors

来源:转载


Traceback (most recent call last):File "F:/U/python/cathamlet.py", line 9, in hamletTxt=getText()File "F:/U/python/cathamlet.py", line 4, in getText txt=open("hamlet.txt","r").read() UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 113938: illegal multibyte sequence


http://blog.csdn.net/shijing_0214/article/details/51971734



使用python的时候经常会遇到文本的编码与解码问题,其中很常见的一种解码错误如题目所示,下面介绍该错误的解决方法,将‘gbk’换成‘utf-8’也适用。 (1)、首先在打开文本的时候,设置其编码格式,如:open(‘1.txt’,encoding=’gbk’); (2)、若(1)不能解决,可能是文本中出现的一些特殊符号超出了gbk的编码范围,可以选择编码范围更广的‘gb18030’,如:open(‘1.txt’,encoding=’gb18030’); (3)、若(2)仍不能解决,说明文中出现了连‘gb18030’也无法编码的字符,可以使用‘ignore’属性进行忽略,如:open(‘1.txt’,encoding=’gb18030’,errors=‘ignore’); (4)、还有一种常见解决方法为open(‘1.txt’).read().decode(‘gb18030’,’ignore’)



解决: 使用 encoding='utf-8'


def getText():
txt=open("hamlet.txt","r",encoding='utf-8').read()
txt=txt.lower()
for ch in '!"#$%&*()+_-,.-/:;<=>[email protected][//]^`~':
txt=txt.replace(ch," ")
return txt
hamletTxt=getText()
words=hamletTxt.split()
counts = {}
for word in words:
counts[word]=counts.get(word,0)+1
items =list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range (100):
word,count=items[i]
print("{0:<10}{1:>5}".format(word,count))

分享给朋友:
您可能感兴趣的文章:
随机阅读: