这是我第一篇关于Stack溢出的文章,我对python很陌生(这不是我的代码,我在一本编程杂志上找到的)。
#!/usr/bin/env python
#letter_changer.py by dr@g
import sys
def replace_chars(line,dic_words):
for i,j in dic_words.iteritems():
line=line.replace(i,j)
return line
letters={‘8’:’th’,’3’:’ks’,’4’:’ps’}
f=sys.argv[1]
filename=open(f,’r’)
for line in filename:
new_line=replace_chars(line,letters)
print new_line,
filename.close()这是一个用来丰富单词列表的脚本,它应该读取一个字符串,将一个字母转换为另一个字符串(第8行),并为该字符串创建一个新条目。我的字典的每一行都包含一个条目。运行该脚本后,我得到以下错误:
SyntaxError:第8行文件letter_changer.py中的非ASCII字符‘\XE2’,但未声明编码;有关详细信息,请参阅http://www.python.org/peps/pep-0263.html
在互联网上进行了一些研究之后,我意识到我应该在脚本的开头使用这段代码:
# vim: set fileencoding=utf-8 :(但我不明白为什么,因为我只使用英文字符)
修正后,我在第8行出现了问题:letters={‘8’:‘th’,‘3’:‘ks’,‘4’:‘ps’}
文件“letter_changer.py”,第8行letters=letters.replace(‘8’:‘th’,‘3’:‘ks’,‘4’:‘ps’)^ SyntaxError:无效语法
解决方案可能很简单,但我在python中是新手,任何答复都是有用的,甚至一些提示和一般指导方针。
提前谢谢你
发布于 2014-03-10 18:43:34
这不是英语字符的问题,而是ASCII和引文字符的问题。文件本身在第8行和第10行中包含非ASCII引号字符,但是因为它们不是ASCII引号字符,所以即使告诉Python文件是UTF-8,它仍然不会将这些字符识别为字符串。比较:
“聪明”引语:
letters={‘8’:’th’,’3’:’ks’,’4’:’ps’}
f=sys.argv[1]
filename=open(f,’r’)ASCII引用:
letters={'8':'th','3':'ks','4':'ps'}
f=sys.argv[1]
filename=open(f,'r')https://stackoverflow.com/questions/22308497
复制相似问题