首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向string.punctuation添加更多标点符号

如何向string.punctuation添加更多标点符号
EN

Stack Overflow用户
提问于 2015-09-02 08:11:22
回答 1查看 1.6K关注 0票数 2

print string.punctuation看起来像这样:

代码语言:javascript
复制
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

我想知道我们是否可以给它添加更多的标点符号,比如看起来像这样的中文句号:“。

我想要做的是:

代码语言:javascript
复制
# -*- 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:应为字符缓冲区对象

EN

回答 1

Stack Overflow用户

发布于 2015-09-02 08:26:56

您可以添加额外的标点符号,但如果您处理的是中文文本,则可能希望使用Unicode而不是8位字符。string.puctuation中的标点符号都是ASCII码,所以要将其作为unicode字符串使用,您需要对其进行解码:

代码语言:javascript
复制
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

代码语言:javascript
复制
# -*- coding: utf8 -*-

(或者您在编辑器中使用的任何实际编码。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32342766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档