Python 熊猫能否读取带引号的空间分隔数据?

Python 熊猫能否读取带引号的空间分隔数据?,python,pandas,Python,Pandas,我有一个格式化的文本文件,我不知道如何在pandas中读取csv以正确读取它。正则表达式直接工作,但不在pandas.read_csv中 默认情况下,我认为这应该适用于默认的quoting=0,而不使用正则表达式 import pandas as pd from io import StringIO s = " \"Random Text\" 1234.00 5678.00 9876.00 1 Z5 2 0 1 1.500 35.3 1.00 389

我有一个格式化的文本文件,我不知道如何在pandas中读取csv以正确读取它。正则表达式直接工作,但不在pandas.read_csv中

默认情况下,我认为这应该适用于默认的quoting=0,而不使用正则表达式

import pandas as pd
from io import StringIO

s = "  \"Random Text\"  1234.00  5678.00  9876.00 1   Z5     2   0   1   1.500   35.3   1.00  389 0.096000  10.00  15000.0  0.102  0.199  0.040  1    0       0    2900             N/A     N/A          N/A\n"
print(s)

df = pd.read_csv(StringIO(s), engine='python', header=None, delim_whitespace=True, quoting=0)
display(df)
但这会在单独的列中生成
“随机的”
文本”

使用正则表达式尝试2:

sep_regex = '\s+(?=([^\"]*\"[^\"]*\")*[^\"]*$)' # regex to find spaces except within quotes
df = pd.read_csv(StringIO(s), header=None, sep=sep_regex, engine='python', warn_bad_lines=True)
display(df)
这将正确地将引用的文本保持在一起,但在每列之间放置NaN。

这应该可以:

df = pd.read_csv(StringIO(s), header=None, sep=r'\s+', quotechar='"')
print(df)

            0       1       2       3   4   5   6   7   8    9     10   11   12     13    14       15     16     17    18  19  20  21    22  23  24  25
0  Random Text  1234.0  5678.0  9876.0   1  Z5   2   0   1  1.5  35.3  1.0  389  0.096  10.0  15000.0  0.102  0.199  0.04   1   0   0  2900 NaN NaN NaN
这对我很有用:

df = pd.read_csv(StringIO(s), sep=None, engine='python', 
header=None, quoting=0, skipinitialspace=True)
输出:

            0       1       2       3   4   5   6   7   8    9   ...     16     17    18  19  20  21    22  23  24  25
0  Random Text  1234.0  5678.0  9876.0   1  Z5   2   0   1  1.5  ...  0.102  0.199  0.04   1   0   0  2900 NaN NaN NaN

[1 rows x 26 columns]

删除
engine='python'
似乎会产生所需的结果。请不要发布代码、数据或回溯的图像。复制并粘贴为文本,然后将其格式化为代码(选择它并键入
ctrl-k
)。。。