【发布时间】:2017-04-15 04:09:22
【问题描述】:
\t正在尝试拆分此制表符分隔的数据集:
171 1000 21
269 1000 25
389 1000 40
1020 1-03 30 1
1058 1-03 30 1
1074 1-03 30 1
200 300 500
(为了清楚起见:)
171\t1000\t21\t\n
269\t1000\t25\t\n
389\t1000\t40\t\n
1020\t1-03\t30\t1\n
1058\t1-03\t30\t1\n
1074\t1-03\t30\t1\n
200\t300\t\t500\n
a = text.split(/\n/)
a.each do |i|
u = i.split(/\t/)
puts u.size
end
==>
3
3
3
4
4
4
4
\t\n 组合似乎刮掉了最后一个 \t,我需要进一步导入。我怎样才能解决这个问题?干杯
已编辑:这是我所期待的:
4
4
4
4
4
4
4
【问题讨论】:
-
您期望的输出是什么?这似乎按预期运行。
-
您应该尝试使用自定义分隔符的 CSV 模块。 CSV.read("文件路径.csv", col_sep: "\t")
-
我无法理解这个问题。您说“尝试拆分此制表符分隔的数据集”,但您没有说要拆分的内容。另外,我无法调和“
\t\n组合似乎剃掉了最后一个\t,...”与标题:“...在"\t"上拆分失去"\n"。你先想在换行符上拆分,然后在制表符上拆分每个字符串,前三行的结果数组以空字符串结尾?如果您可以编辑问题以显示您想要的结果,这将特别有用。 -
另外,我注意到前三行中的每一行在最后一个制表符和换行符之间都包含一个或多个空格。这是故意的吗?如果是这样,你想保留这些空间吗?
-
前三个条目,\t\n 很重要,应该在记录的数组中作为 nil 导入,而不是 3 成员数组。