使用“两个空格”作为分隔符从 csv 导入到 Libreoffice Calc

使用“两个空格”作为分隔符从 csv 导入到 Libreoffice Calc

我想将一些数据从 csv/text 文件导入到 Calc。

在第一列中我想有'虚拟文本 # i',第二列为数值。

在文本文件中,“虚拟文本 # i' 和数值之间有多个空格隔开。因此,我可能会使用 ' '(两个空格)作为分隔符,然后勾选“合并分隔符”选项来实现此目的。

但是,我不知道该怎么做。我尝试使用“其他”作为自定义分隔器但它似乎将任意数量的空格都解释为一个。

这是我复制并粘贴到电子表格的初始数据。

初始文本数据

这就是我能得到的。请注意,取消标记“空格”选项只会完成对右尾空格的计算。

如您所见,以下均不适用。'虚拟文本 # i' 分布在各个列中,因为 Libreoffice 似乎只采用一个空格作为分隔符。

在此处输入图片描述

第二个 (合并分隔符) 更接近,但仍然没有得到 '虚拟文本 # i' 在第一列。

在此处输入图片描述

由于@Zina 在另一个版本中对其进行了测试,所以我检查了我的 Libreoffice 版本(4.3.3.2),但我怀疑它是否是根本原因,因为它似乎是一个相当明显的缺陷。

我做错了什么?可能是版本缺陷吗?提前致谢。

答案1

我刚刚在 CentOS 7 上尝试使用 LibreCalc 4.3.7.2,它运行正常。您只需选择“空格”和“合并分隔符”。我创建了一个包含随机数据的文本文件(行甚至没有相同数量的列),一些数据用 1 个空格分隔,一些用 2 个甚至更多空格分隔。我能够在预览窗格中看到启用/禁用“合并分隔符”时数据如何变化。您确定有空格吗?而不是一些未显示的特殊字符?

好的。现在我明白你的意思了。我认为,只有将“虚拟文本#??”放在引号下,并取消选择除“其他”之外的所有内容,才能获得想要的行为,在“其他”中,你必须在其中输入双空格,并将文本分隔符设置为使用的引号。或者,你必须将所有双空格替换为分号,就像其他人已经建议的那样。

答案2

在(可编写脚本的)两步过程中,您可以使用 sed 将一些空格转换为制表符,然后导入。示例脚本:

#!/bin/bash
tmpcsv=$(mktemp)
inputcsv=$1
mv $inputcsv $tmpcsv
sed 's/  /\t/g' $tmpcsv > $inputcsv
scalc $inputcsv

相关内容