3

我有一个文本文件,我必须从中读取很多数字(双)。它具有在文本文件中可见的 ASCII 控制字符,如 DLE、NUL 等。因此,当我阅读它们以仅从一行中获取双精度数/整数时,我会遇到诸如“无效文字 \x10”之类的错误。下面显示的是我文件的前 2 行。

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 一次从文本文件中删除所有这些控制字符?我希望在将文件解析为数字之前完成此操作...

任何帮助表示赞赏!

4

2 回答 2

3

使用string.printable

>>> import string
>>> filter(string.printable.__contains__, '\x00\x01XYZ\x00\x10')
'XYZ'
于 2013-07-05T03:39:38.277 回答
2

我知道这是很老的帖子,但我正在回答我的想法,它可以帮助其他人。

我做了如下。它将用空字符串替换所有 ASCII 控制字符。

line = re.sub(r'[\x00-\x1F]+', '', line)

参考:ASCII(美国信息交换标准代码)代码

参考:Python re.sub()

于 2017-04-20T13:54:33.630 回答