编码错误

时间:2011-09-26 05:46:29

标签: python

我的代码在编码错误时出现问题:

文件“test.py”,第1行

SyntaxError:编码问题:带BOM

我附上了以下代码。是否有任何明确的想法来解决它?输入和输出文件包含韩语单词,数字和英文字符。

我尝试在Mac和Windows中运行此代码,它在两个操作系统上都不起作用。请帮帮我!

# coding: uft-8

from __future__ import print_function
from __future__ import unicode_literals
import os, sys
import codecs
import re
import subprocess, shlex


REGEXP = re.compile(r'(\w+)/(\(.*?\))')                                                                                                                                                                                                                                 


def main():                                                                                                                                                                                                                                                             
    words = {}                                                                                                                                                                                                                                                          

    with codecs.open('E:\\mach.txt', 'r', encoding='cp949') as fp: 
        for line in fp:                                                                                                                                                                                                                                                     
            for item, category in REGEXP.findall(line):                                                                                                                                                                                                                     
                words.setdefault(category, {}).setdefault(item, 0)                                                                                                                                                                                                          
                words[category][item] += 1                                                                                                                                                                                                                                  

    with codecs.open('result.txt', 'w', encoding='cp949') as fp:                                                                                                                                                                                                                                        
        for category, words in sorted(words.items()):                                                                                                                                                                                                                       
            print(category, file=fp)                                                                                                                                                                                                                                        
            for word, count in words.items():                                                                                                                                                                                                                               
                print(word, count, sep=' ', file=fp)                                                                                                                                                                                                                        
            print(file=fp)                                                                                                                                                                                                                                                  
    return 0                                                                                                                                                                                                                                                            

if __name__ == '__main__':                                                                                                                                                                                                                                              
    raise SystemExit(main()) 

2 个答案:

答案 0 :(得分:4)

你在第一行拼错了UTF-8。由于您在代码中只使用了ASCII字符,因此甚至不需要编码行。

答案 1 :(得分:2)

问题不在于代码,而在于脚本本身的编码。尝试使用其他编辑器保存它。 Windows上的记事本适用于我。