开发者

endcoding error

my code has a trouble with encoding error:

File "test.py", line 1

SyntaxError: encoding problem: with BOM

I attached the code below. is there any clear idea to fix it? the input and the output file contain Korean words, numbers, and english charaters.

I try to run this code in Mac and windows, it doesn't work at both of OS. please help me out!

# 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()) 


You've misspelled UTF-8 on the first line. Since you've only used ASCII characters in you're code, it isn't even required to have a coding line.


The problem is not with the code, but with the encoding of the script itself. Try saving it with a different editor. Notepad on Windows works for me.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜