将正则表达式传递给 python 的 csv 模块或 numpy 的 genfromtxt / loadtxt 中的分隔符字段?

rya*_*lon 5 python csv numpy

我用一些奇怪的分隔(即用逗号分隔的值组,用制表符与其他值分隔)将数据制成表格:

A,345,567   56  67  test
Run Code Online (Sandbox Code Playgroud)

是否有一种干净而巧妙的方法来处理以下任何一个中的多个分隔符:csv modulenumpy.genfromtxtnumpy.loadtxt

我找到了这样的方法,但我希望有更好的解决方案。理想情况下,我想使用 genfromtxt 和正则表达式作为分隔符。

Chr*_*ick 4

我\xe2\x80\x99m恐怕在你要求的三个包中答案是否定的。但是,您可以这样做replace('\\t', ',')(或相反)。例如:

\n\n
from StringIO import StringIO # py3k: from io import StringIO\nimport csv\nwith open('./file') as fh:\n    io = StringIO(fh.read().replace('\\t', ','))\n\nreader = csv.reader(io)\n\nfor row in reader:\n    print(row)\n
Run Code Online (Sandbox Code Playgroud)\n

  • @shootingstars:您可以使用[pandas.read_csv](http://pandas.pydata.org/pandas-docs/stable/ generated/pandas.io.parsers.read_csv.html);“pandas”已迅速成为最有用的数据处理 Python 工具之一。它接受正则表达式分隔符;我自己也用过。您可以轻松地将 pandas `DataFrames` 转换为 `ndarray`。 (2认同)