使用python删除字符串中的标点、数字等
python的中文问题一直是让人不爽的一件事情,而python的一个强大之处恰恰是string的处理,而且string就难免不包含chinese。所以处理string中的chinese就变得很重要了。 实验室的complex network项目,目前是数据处理阶段,考虑到python的高效和强大的string功能,我决定使用python对大量的数据进行处理。
下面是一个简单的demo,先贴代码,然后进行说明: python 代码:
# -*- coding: gb18030 -*-
import string
import re
identify = string.maketrans('', '')
delEStr = string.punctuation + ' ' + string.digits #ASCII 标点符号,空格和数字
delCStr = '《》()&%¥#@!{}【】'
s = '中华人民共和国(北京)'
s = s.translate(identify, delEStr) #去掉ASCII 标点符号和空格
if re.findall('[\x80-\xff].', s): #s为中文
s = s.translate(identify, delCStr)
print s
else: #s为英文
print s
当然,首先是要import string和re(这里需要正则表达式功能)。 delEStr是一个包含英文标点符号和数字的字符串,就如 ‘(){}<>1234 ‘ 这样。delCStr是一个包含中文标点符号的字符串。s是一个测试字符串。 12行的功能就是把s中的英文标点符号都删除。
统计输入字符串26字母个数,以list返回
import string
def countchar(rawinput):
rawstr=rawinput.lower()
chardict=dict(zip(list(string.lowercase),[0]*26))
#rawstr=raw_input("please input a string:").lower()
delEStr = string.punctuation + ' ' + string.digits
newstr=rawstr.translate(None,delEStr)
#print 'rawstr:',rawstr
# print 'newstr:',newstr
for i in list(newstr):
chardict[i]+=1
#print chardict
print [chardict[i] for i in sorted(chardict)]
if __name__=='__main__':
countchar(raw_input())