python使用dictionary for translate()为我提供了“TypeError:应为字符缓冲区对象”

python使用dictionary for translate()为我提供了“TypeError:应为字符缓冲区对象”,python,replace,translate,Python,Replace,Translate,为什么translate会给我TypeError:在使用字典时预期会出现字符缓冲区对象错误 remap = { 'with': 'TEXT1', 'as': 'TEXT2', 'text_in': 'TEXT3' } s = "with open(loc_path + 'sample_text.txt', 'rb') as text_in:" ss = s.translate(remap) print ss 以下是错误消息: Traceback (m

为什么translate会给我TypeError:在使用字典时预期会出现字符缓冲区对象错误

remap = {
    'with': 'TEXT1',
    'as': 'TEXT2',
    'text_in': 'TEXT3'
    }

s = "with open(loc_path + 'sample_text.txt', 'rb') as text_in:"

ss = s.translate(remap)    
print ss
以下是错误消息:

Traceback (most recent call last):
  File "C:\...\REMAP1.py", line 9, in <module>
    ss = s.translate(remap)
TypeError: expected a character buffer object
[Finished in 0.1s with exit code 1]
输出:

TEXT1 open(loc_path + 'sample_text.txt', 'rb') TEXT2 TEXT3:
[Finished in 0.1s]
从重点矿井:

string.translates,表[,deletechars]

删除deletechars中的所有字符(如果存在),然后使用表翻译字符,表必须是一个256字符的字符串,提供每个字符值的翻译,并按其序号索引


在您的代码中,重新映射不满足此要求。

是什么让您认为translate可以这样使用?你读了吗?你是不是节俭到要投反对票?它在python烹饪书中是这样使用的,所以我想看看它是否有效。@jes516:一本包含无效代码的python烹饪书?我不知道那是什么意思。是语法不正确还是字典中的值不正确?@jes516:在我看来,文档非常清楚。很明显,256个字符的字符串和字典不是一回事。我明白这一点。我很困惑,因为我正试图更正代码中使用translate的方法,但我想没有什么需要更正的,因为它不能与字典一起使用,只能与string一起使用?@jes516:您可以使用它来制作一个正确的翻译表。基本上,传递两个长度相等的字符串,定义所需的字符到字符映射。您不能使用它将一个单词转换为另一个单词,这是一种多字符串替换。一般来说,您可能需要使用。正确。我使用了maketrans和re.sub,但我在一本书中看到一个翻译与词典一起使用的例子,我想试试。非常感谢。
TEXT1 open(loc_path + 'sample_text.txt', 'rb') TEXT2 TEXT3:
[Finished in 0.1s]