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

将正则表达式传递给python中的分隔符字段';s csv模块或numpy';是genfromtxt/loadtxt吗?,python,csv,numpy,Python,Csv,Numpy,我用一些奇怪的定义将数据制成表格(即用逗号分隔的值组,用制表符与其他值分隔): 是否有一种干净而巧妙的方法来处理以下任意一种中的多个分隔符:,或 我已经找到了方法,但我希望有更好的解决办法。理想情况下,我希望使用genfromtxt和正则表达式作为分隔符。在您要求的三个软件包中,恐怕答案是否定的。但是,您可以只执行replace('\t',',')(或相反)。例如: from StringIO import StringIO # py3k: from io import StringIO imp

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

是否有一种干净而巧妙的方法来处理以下任意一种中的多个分隔符:,或


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

在您要求的三个软件包中,恐怕答案是否定的。但是,您可以只执行
replace('\t',',')
(或相反)。例如:

from StringIO import StringIO # py3k: from io import StringIO
import csv
with open('./file') as fh:
    io = StringIO(fh.read().replace('\t', ','))

reader = csv.reader(io)

for row in reader:
    print(row)

使用制表符和
作为分隔符是否有效?检查您的数据是否应该先用制表符或逗号分隔,或者其他任何方式。谢谢。是否有另一个软件包支持此功能,最好是以numpy阵列作为输出?我找到了另一个被sugested()的,但它似乎也不支持这样的东西。这是假设
\t
是等价的。再说一次,只有OP知道它们是否真的是等价的。在我正在研究的这个特殊案例中,它们是等价的。不过,这种方法是资源密集型的吗?@shootingstars:你可以使用
pandas
已迅速成为数据搜索最有用的Python工具之一。它接受正则表达式分隔符;我自己也用过。您可以轻松地将pandas
DataFrames
转换为
ndarray
s.@DSM我还没有研究过pandas
pandas
,尽管还有一些其他建议,但这将是我尝试的另一个很好的理由。
from StringIO import StringIO # py3k: from io import StringIO
import csv
with open('./file') as fh:
    io = StringIO(fh.read().replace('\t', ','))

reader = csv.reader(io)

for row in reader:
    print(row)