2013-07-05 65 views
1

我有一个文本文件,我必须读取很多数字(双精度)。 它具有ASCII控制字符,如DLE,NUL等,它们在文本文件中可见。所以当我读取它们以仅从行中获得双精度/整数时,我得到像“无效文字\ x10”这样的错误。下面显示的是我的文件的前两行。 从文本文件中删除ASCII控制字符Python

DLE NUL NUL NUL [1, 167, 133, 6]DLE NUL NUL 
YS FS NUL[0.0, 4.3025989e-07, 1.5446712e-06, 3.1393029e-06, 5.0430463e-06, 7.1382601e-06 

如何从一个文本文件,同时删除所有这些控制字符,使用Python?我想 这个工作之前我把文件解析成数字...

任何帮助表示赞赏!

+0

也许你应该考虑把它们解析,而不是让你知道如何解析文件的其余部分。 –

+0

但是,我仍然需要删除这些字符之前,我做任何与他们的阅读.... – atmaere

回答

2

使用string.printable

>>> import string 
>>> filter(string.printable.__contains__, '\x00\x01XYZ\x00\x10') 
'XYZ' 
+0

使用正则表达式(请参阅[这个答案](http://stackoverflow.com/a/93029/1988505))是一个数量级更快。 –

+0

@WesleyBaugh,如果速度很重要,你可以使用['str.translate'](https://docs.python.org/2/library/stdtypes.html#str.translate)。 – falsetru

+0

有unicode可打印的吗? – alvas