函数抛出一个SyntaxError :( unicode错误)

时间:2014-01-13 06:14:50

标签: python

我在python中运行以下代码,它给了我这个错误:

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)

请帮帮我。

2 个答案:

答案 0 :(得分:3)

带有\U\u转义序列的Unicode文字(Python 3.x中的字符串文字)应为以下格式之一:

>>> 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转义序列。您应该检查代码的其他部分。

答案 1 :(得分: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)

另一个可能性是你有一个python转换为代码的文件名,例如文件名如'c:\ Users \ something'这里\ U将被解释。请参阅this回答