生成Wordlist,Python脚本

时间:2014-03-10 18:36:42

标签: python

这是我在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的新手,任何回复都很有用,甚至一些提示和一般指导

提前谢谢

1 个答案:

答案 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')