2014-01-13 84 views
2

我運行在python下面的代碼和它給我這個錯誤:函數拋出一個語法錯誤:(Unicode的錯誤)

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape 

def filePro(filename): 
    f=open(filename,'r') 
    wordcount=0 
    for lines in f: 
     f1=lines.split() 
     wordcount=wordcount+len(f1) 
    f.close() 
    print ('word count:'), str(wordcount) 

請幫助我。

回答

3

的Unicode文本(在Python 3.x的字符串)中與\U\u轉義序列應該是下列形式之一:

>>> u'\U00000061' # 8 hexadecimals 
'a' 
>>> u'\u0061'  # 4 hexadecimals 
'a' 

如果沒有足夠的轉義序列,你會得到一個SyntaxError。

>>> u'\u61' 
    File "<stdin>", line 1 
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-3: truncated \uXXXX escape 
>>> u'\U000061' 
    File "<stdin>", line 1 
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-7: truncated \UXXXXXXXX escape 

如果你的意思是字面\U。你最好使用原始字符串:

>>> r'\u0061' 
'\\u0061' 
>>> print(r'\u0061') 
\u0061 

在你發佈的代碼中,沒有unicode轉義序列。你應該檢查你的代碼的其他部分。

0

不知道,這裏提供的信息不多,但我猜python試圖打開錯誤編碼的文件,你可以用解碼器庫打開文件,使用正確的編解碼器打開文件,如果我不'不知道它是否來自Windows,我通常使用'cp1252',因爲這可以打開大多數類型。

import codecs 

def filePro(filename): 
    f = codecs.open(filename, 'r', 'cp1252'): 
    wordcount=0 
    for lines in f: 
     f1=lines.split() 
     wordcount=wordcount+len(f1) 
    f.close() 
    print ('word count:'), str(wordcount) 

另一個possibillity是,你有一個文件名是蟒蛇轉化爲代碼,例如像一個文件名「C:\用戶\東西」說到這裏,\ U將被解釋。請參閱this回答