这是我在Stack Overflow中的第一篇文章,我是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()
这是一个用于丰富wordlist的脚本,它应该读取一个字符串,将一个字母更改为另一个字符串(第8行)并为该字符串创建一个新条目。我的字典的每一行在每一行中都包含一个条目。 运行该脚本后,我收到以下错误:
SyntaxError:文件letter_changer.py中的非ASCII字符'\ xe2' 第8行,但没有声明编码;看到 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的新手,任何回复都很有用,甚至一些提示和一般指导
提前谢谢
答案 0 :(得分:3)
这不是英语字符的问题,而是 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')