TypeError:期望字符缓冲区对象执行translate函数时

时间:2016-05-26 17:03:45

标签: python unicode

用于删除str的标点符号。

tbl = dict.fromkeys(i for i in xrange(sys.maxunicode)
                      if unicodedata.category(unichr(i)).startswith('P'))
def remove_punctuation(text):
    return text.translate(tbl)

remove_punctuation(',')

但是当我运行代码时它显示错误消息:

Traceback (most recent call last):
  File "C:/Users/user/PycharmProjects/untitled2/is_include.py", line 22, in <module>
    remove_punctuation('')
  File "C:/Users/user/PycharmProjects/untitled2/is_include.py", line 20, in remove_punctuation
    return text.translate(tbl)
TypeError: expected a character buffer object

1 个答案:

答案 0 :(得分:-1)

text.translate()期待一个字符串。请务必先将tbl转换为字符串。

def remove_punctuation(text):
    return text.translate(str(tbl))

更新:

或者,正如评论回复中提到的Sven Marnach,您可以使用unicode-translate。

remove_punctuation(u',')