【发布时间】:2014-02-28 22:24:58
【问题描述】:
我有一个如下所示的文本文件:
a1: sample1
b1: sample2
c1: sample3
d1: sample4
sample5
sample0
a1: sample_1
b1: sample_2
c1: sample_3
d1: sample_4
sample_5
a1: sample_11
b1: sample_22
c1: sample_33
d1: sample_44
我需要将其转换为可以在 Excel 中访问的 CSV。最终输出应如下所示:
a1, b1, c1, d1
sample1,sample2,sample3,"sample4 sample5"
sample_1,sample_2,sample_3,"sample_4 sample_5"
sample_11,sample_22,sample_33,"sample_44 sample_55"
sample 4 和sample5 和sample0,都属于d1,即。在一排。 因此,基本上 d1 将是一个单元格,它将具有三个值,例如:
a1 b1 c1 d1 行0
sample1 sample2 sample3 sample4 row1
示例 5 第 1 行
样本0第1行
sample_1 sample_2 sample_3 sample_4 row2 sample_5 行 2
d1 现在是一个有 2 个值的单元格。
我能够解析文本文件并根据需要获取值。 无法使列 d1 以所需的方式。 我该怎么做?
需要一个 Perl 脚本来执行此操作吗? 有什么建议吗?
open(file, "f1.txt");
open(csv, ">+f2.csv");
while($line =<file>)
chmop;
if($line =~/a1)
{
@arr1 = split(/:/,$line)
print csv "@arr1[1],";
}
if($line =~/b2)
{
@arr2 = split(/:/,$line)
print csv "@arr2[1],";
}
close(file);
close(csv);
这是我到现在为止的代码。
【问题讨论】:
-
欢迎来到 SO!请向我们展示您到目前为止所做的工作,并为您的问题添加更多详细信息!
-
要采用 CSV 格式,
a1,、b1,、c1,和d1之间不需要空格。您也不需要在包含空格的字段周围加上引号。 -
在您的问题中编辑“需要 Perl 脚本”不会增加任何内容(开始时它已被标记为 perl)。 Uli Köhler 询问您编写的 Perl 代码有什么具体问题。你确实写了something,不是吗?