我有大量包含数据的文件,我尝试使用Python脚本进行处理。从文本文件中删除未知字符
这些文件是未知的编码,如果我在Notepad ++中打开它们,它们包含由加载'空白'字符(在记事本++中黑色背景上的白色表示为NULL)分隔的数字数据。
为了处理这个问题,我通过空字符\ X00的文件分开,并使用下面的脚本检索唯一数值:
stripped_data=[]
for root,dirs,files in os.walk(PATH):
for rawfile in files:
(dirName, fileName)= os.path.split(rawfile)
(fileBaseName, fileExtension)=os.path.splitext(fileName)
h=open(os.path.join(root, rawfile),'r')
line=h.read()
for raw_value in line.split('\x00'):
try:
test=float(raw_value)
stripped_data.append(raw_value.strip())
except ValueError:
pass
然而,存在有时在该文件中其他无法识别的字符(如就像我发现的那样,总是在开头) - 这些在Notepad ++中显示为'EOT','SUB'和'ETX'。它们似乎干扰了Python中文件的处理过程 - 文件似乎以这些字符结束,即使Notepad ++中有更多可见的数据。
如何在处理之前从这些文件中删除所有非ASCII字符?
如果这些文件在该未知编码中是正确的,那么您可能需要使用一些逻辑来尝试如果某种编码看起来合适,并阅读该编码中的文件。应该有一些库/示例代码在那里。 (就像Notepad ++以特定的编码方式打开它认为合适的文件。)如果这不是一个选项......请参阅下面的答案。 – Kissaki 2010-11-25 15:45:16
我找不到任何适合的编码 - 认为这是一种奇怪的独特格式。 – meepmeep 2010-11-25 16:05:37
如果你问了一个问题,以确定你的文件的布局和编码,你会帮助你很多...(1)文件的来源(什么网站,什么软件创建它们)(2)显示文件的前几个字节的内容...使用`print repr(open('afile.ext', 'rb')。read(200))` – 2010-11-25 18:28:00