TypeError:maketrans()恰好接受2个参数(给定3个)

时间:2018-08-08 12:00:28

标签: python string python-2.x

以下代码改编自网站,用于删除单词中的标点符号。

import string    
filename = 'some_file.txt'
file = open(filename, 'rt')
text = file.read()
file.close()
# split the text into words
words = text.split()

table = str.maketrans('', '', string.punctuation)
stripped = [w.translate(table) for w in words]
print(stripped[:100])

错误为"TypeError: maketrans() takes exactly 2 arguments (3 given)"。 我阅读了Python文档,该文档说明了具有maketrans()的1、2或3个参数的选项。 docs.python.org说:“如果有第三个参数,则必须是一个字符串,其字符将在结果中映射为None”。 我正在使用Python2。是否有清除错误的想法?

1 个答案:

答案 0 :(得分:1)

我认为您正在将python3.1 docs(其中“如果有第三个参数,它......”的语句被提及。)与Python2混淆了。根据python2文档-https://docs.python.org/2/library/string.html,它不能具有3个参数。

但是,如果您想实现具有第3个参数(将一组字符映射为None)的功能,可以通过将字符串添加到translate来实现,

stripped = [w.translate(table, string.punctuation) for w in words]