php - 在 PHP 中解析 Python 数组

标签 php arrays python-2.7

我的服务器上运行一个 Python 脚本,它创建一个 2D 列表,如下所示:

[['Header1', 'Header2', 'Header3'], ['2012-09-10 00:11:00', '61.3', '57.0'], ...]

我将其传递回运行我的网页的 PHP 脚本。这是我目前用来获取数组的 PHP。我得到了行,但显然在开头有一个不需要的 [[ ],在结尾有 ]]

exec("python weatherdata.py $stationID $startdate $enddate", $pyoutput);
$vars = explode("], [", $pyoutput[0]);

为了解释我真正想做的事情,因为必然有一个“正确”的解决方案(我对 PHP 一点也不熟悉),我想做的是改编 here 中的代码它将 CSV 文件下载给用户,但使用 mySQL 来填充它。这里的设置部分工作正常。

针对下面 jack 的回答进行了编辑

// Commented out my working parsing part
// remove the start and end square braces then split into rows
//$output = str_replace("[[","",$pyoutput);
//$output = str_replace("]]","",$output);
//$rows = explode("], [", $output[0]);

// output headers so that the file is downloaded rather than displayed
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename='data.csv');

// create a file pointer connected to the output stream
$output = fopen('php://output', 'w');

foreach (preg_split('/],\s*\[/', trim($pyoutput, '[]')) as $row) {
        $data= preg_split("/',\s*'/", trim($row, "'"));
        fputcsv($data);
}
// Commented out my working write to CSV part
// write rows
//foreach ($rows as $row){
//    $row = str_replace("'","",$row);
//    $row = explode(",", $row);
//    fputcsv($output, $row);
//}

最佳答案

不确定这对您是否可行,但从 PHP 5.4 开始它支持 short array syntax ,例如[1, 2, 3] 而不是 array(1, 2, 3)

所以,你可以使用邪恶...我的意思是eval():

$vars = eval(`python weatherdata.py $stationID $startdate $enddate`);

否则,如果数组语法始终采用该格式,只需使用 preg_split() 将其分开,首先使用方括号,然后使用单引号:

foreach (preg_split('/],\s*\[/', trim($s, '[]')) as $row) {
        $data = preg_split("/',\s*'/", trim($row, "'"));
        print_r($data);
}

输出:

Array
(
    [0] => Header1
    [1] => Header2
    [2] => Header3
)
Array
(
    [0] => 2012-09-10 00:11:00
    [1] => 61.3
    [2] => 57.0
)

关于php - 在 PHP 中解析 Python 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13879566/

相关文章:

python - 从 pandas 中的单元格获取数据并在计算中使用它

django - 'staticfiles'不是有效的标签库:找不到模板库staticfiles

python-2.7 - django 核心异常配置不当 :

php - 在 PHP 中高效的平面文件搜索

php - 在mysql中创建表约束

c++ - 两个不同形状 BST 的数组形式是否总是具有不相等的数组

javascript - Json 数据转入 JavaScript 数组

php - 是 Blade 模板的元保留名称吗?

javascript - 我会用什么表达方式?

c++ - 使用特殊规则将一个数组分成两个数组