print string.punctuation看起来像这样:
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~我想知道我们是否可以给它添加更多的标点符号,比如看起来像这样的中文句号:“。
我想要做的是:
# -*- coding: utf-8 -*-
exclude = string.punctuation.decode("ascii") + u"。"
c = codecs.open("my_file.csv", "w", "utf-8")
my_string = "你好, 天气很好。"
#print my_string.encode('utf-8').translate({ord(p): None for p in exclude})
print >> c, my_string.encode('utf-8').translate({ord(p): None for p in exclude})
desired output: "你好, 天气很好"print >> c, my_string.encode('utf-8').translate({ord(p): None for p in exclude})给出一个错误:
TypeError:应为字符缓冲区对象
发布于 2015-09-02 08:26:56
您可以添加额外的标点符号,但如果您处理的是中文文本,则可能希望使用Unicode而不是8位字符。string.puctuation中的标点符号都是ASCII码,所以要将其作为unicode字符串使用,您需要对其进行解码:
exclude = string.punctuation.decode("ascii") + u"。"
my_string = u"你好, 天气很好。"
print my_string.translate({ord(p): None for p in exclude})请注意,我必须以不同的方式调用translate,因为unicode.translate采用的参数与str.translate不同。其中一个参数是从Unicode序号(整数)到字符、序号或(我在本例中使用的) None (从输出中删除字符)的字典映射。
如果您打算在源代码中包含Unicode字符串文字(如"。"字符串),则需要确保在注释中具有适当的编码declared at the top of your file:
# -*- coding: utf8 -*-(或者您在编辑器中使用的任何实际编码。)
https://stackoverflow.com/questions/32342766
复制相似问题