首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将此文本转换为所需的数组格式并在csv中导出?

问如何将此文本转换为所需的数组格式并在csv中导出?
EN

Stack Overflow用户
提问于 2018-06-27 13:40:52
回答 1查看 46关注 0票数 0

我使用pdftotext工具从pdf中提取了这篇文章。

请查找以下文本结构

代码语言:javascript
复制
stage    title1    title2  title3  title4
I        value1    value2  value3  
II                         value5  value6

stage    Other1      Other2     Other3     Other4
I        otherval1   otherval2  otherval3  otherval4

现在,我希望使用这种方式使用适当的列和标题以CSV格式导出此文本,或者以这种方式构建数组。

代码语言:javascript
复制
[
  "category" => "title1",
  "score"    => "value1",
],
[
  "category" => "title2",
  "score"    => "value2",
],
[
  "category" => "title3",
  "score"    => "value3"
],
// unable to to do this
[
  "category" => "title3",
  "score"    => "value5"
],
[
  "category" => "title4",
  "score"    => "value6",
],

.
.
// so on

现在的问题是

  • 第一阶段和第二阶段中的列值是可选的,但任何一行都至少包含每个列的一个值。
  • 第二阶段行是可选的,可能存在或不存在。
  • 如果第二阶段行存在,则该行中至少存在一个列值。

我面临的问题是如何映射

  • value5到title3
  • value6到titl4

这里是我的解析器代码(PHP)

代码语言:javascript
复制
$rows = explode("\n", $pdfExtractedText);
$rows = array_values(array_filter($rows));

$categories = array_values(array_filter(explode(" ", $rows[7])));
$stage1Scores = array_values(array_filter(explode(" ", $rows[8])));
$stage2Scores = array_values(array_filter(explode(" ", $rows[9])));
var_dump($categories);
var_dump($stage1Scores);
var_dump($stage2Scores);

输出:

代码语言:javascript
复制
// categories
array:13 [
  0 => "stage"
  1 => "title1"
  2 => "title2"
  3 => "title3"
  4 => "title4"
]

//values - Index preserved so that I can map with categories
array:14 [
  0 => "I"
  1 => "value1"
  2 => "value2"
  3 => "value3"
  4 => "value4"
]

// index not preserved :(
array:2 [
  0 => "II"
  1 => "value5",
  2 => "value6"
]
EN

回答 1

Stack Overflow用户

发布于 2018-06-27 13:50:48

那就试试这个

代码语言:javascript
复制
$csv = "";

$csv .= implode("," , $categories) . PHP_EOL; 
$csv .= implode("," , $stage1scores) . PHP_EOL;
$csv .= implode("," , $stage2scores) . PHP_EOL;

然后把它写到文件里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51064326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档