Maorongrong smile like sunshine

删除python字符串中的标点、数字等

2015-08-15

使用python删除字符串中的标点、数字等

转:删除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())

上一篇 Python学习笔记

下一篇 pickle

Comments