Skip to main content
 首页 » 编程设计

python之从 Python 中的字符串中去除除数字和小数点以外的所有内容的最佳方法

2025年05月04日21findumars

我正在使用 Python 2.7 读取一个 ASCII 数据流,其中包括带小数位的非负数,但也包括“垃圾字符”,包括不可打印的字符、字母和标点符号。我可以通过这种方式去掉不可打印的内容:

rawdata2 = filter(lambda x: x in string.printable, rawdata) 

但是留下这样的字符串:

Ri-G2015,2,20.23,9.13,273.1- ZW;w;K-;-A;B`R

去除除数字和小数点 (.) 以外的所有内容的好方法是什么,所以我只剩下这个:

2015,2,20.23,9.13,273.1

请您参考如下方法:

更快的方法是使用正则表达式:

import re 
 
rawdata2 = re.sub('[^0-9,.]', '', rawdata) 

这只是删除不在集合 0-9 , . 中的任何字符(通过用空字符串替换它们)。这比过滤 100 次重复输入字符串的方法快两倍多,而且更简洁。


最快的方法(如果您要处理大量文本)是使用 string.translate:

deltable = "".join(chr(c) for c in xrange(256) if chr(c) not in "0123456789,.") 
 
rawdata2 = string.translate(rawdata, None, deltable) 

这比您原来的过滤方法快 100 倍以上。