【发布时间】:2018-07-18 05:41:50
【问题描述】:
有一些与此类似的问题,但我找不到确切的答案。
我有一个非常奇怪的文本文件,其内容如下:
field1=1; field2=2; field3=3;
field1=4; field2=5; field3=6;
Matlab 的 textscan() 函数可以非常巧妙地处理这个问题,您可以这样做:
array = textscan(fid, 'field1=%d; field2=%d; field3=%d;'
你会得到一个单元格数组,其中每一列都包含相应的字段,文本被简单地忽略。
我想用 Python 重写处理这个文件的代码,但是 Numpy 的 loadtxt() 和 genfromtxt() 似乎没有这种能力来忽略穿插有所需数字的文本?
有哪些 Python 方法可以去除文本并只取回字段?如果需要,我很乐意使用pandas 或其他库。谢谢!
编辑:This 问题被建议作为答案,但它仅提供与 textscan 基本用法相同的内容,不处理输入中不需要的文本。下面fromregex的答案是我需要的。
【问题讨论】:
-
@grshankar:我不会认为这个问题是重复的,因为这些答案指向 Numpy 的
loadtxt()和genfromtxt(),由于要处理的数据结构,它们不符合 OP 的需求。我只是花时间阅读了 Matlab 的textscan的文档,我很确定没有简单的替代品。我能想到的最好的办法就是用正则表达式伪造它并将其作为答案。 -
保持打开状态,除非找到更好的副本! OP 在他的问题中解决了这些答案的缺点。