在Google表格中解析制表符分隔的文本文件

时间:2014-11-14 19:34:47

标签: csv google-sheets

我在网络上有一个txt文件,其中包含制表符分隔值(TSV / CSV),如下所示:

  

PRODUCT_ID tab {颜色{1}}价格tab数量
项目1 tab {红{1}} $ 5.2 tab 5
项目2 tab {蓝{1}} $ 7.5 tab 10

我使用tab公式将txt文件导入Google电子表格。问题是现在我需要将文本拆分为列。我尝试了以下公式但没有成功:

tab

我尝试的另一件事是使用tab功能,但我无法弄清楚如何匹配Google Spreadsheets中的IMPORTDATA(url)字符?

5 个答案:

答案 0 :(得分:4)

使用标准粘贴粘贴文本时,默认情况下,页面会剥离标签。制表符分隔数据可以使用以下方式粘贴和自动解析:

右键单击 - >粘贴特殊 - >仅粘贴值

答案 1 :(得分:1)

事实证明,IMPORTDATA(url) 可以导入制表符分隔文件,但它希望文件名具有.tsv扩展名。这与Excel不一致,其中以制表符分隔的导出会导致*.txt

如果您可以确保使用.tsv扩展程序,则问题就解决了。

您还可以使用表单UI导入文件(导入新的电子表格)。选择File > Import...,然后选择Upload > Select a file from your computer。文件选择对话框打开后,将网址粘贴到file name字段中,然后点击Open。该文件将下载到您的PC,然后上传到云端硬盘,通过导入对话框,您可以选择分隔符。

(在Windows 8.1上使用Chrome验证;我不知道这将如何在其他操作系统或浏览器上运行。)


修改:请参阅this gist

 importFromCSV(string fileName, string sheetName)

使用位于用户GDrive中的CSV文件中读取的内容填充表格。如果未提供任何参数,该函数将打开inputBoxes以交互方式获取它们。

自动检测制表符或逗号分隔的输入。

答案 2 :(得分:1)

注意::我知道这个问题是在2014年提出的,大约5年后我将回答这个问题。我将答案发布在这里,希望其他人在这里用谷歌搜索的方式可以避免头疼,并且可以通过我设计解决方案的方式得到帮助。

问题摘要:默认情况下,仅当文件名以扩展名.TSV结尾时,IMPORTDATA()函数才能正确处理制表符分隔的文件

经过无数次尝试之后,我想出了如何诱使Google表格导入以制表符分隔的文件,而不管扩展名如何。

对于那些寻求快速而又肮脏的答案的人,请将以下内容复制到Google表格的单元格中进行尝试:

=ARRAYFORMULA(IFERROR(SPLIT(IMPORTDATA("https://iso639-3.sil.org/sites/iso639-3/files/downloads/iso-639-3_Latin1.tab"),CHAR(9),FALSE,FALSE)))

对于那些想了解更多的人,我将尝试解释每个嵌套函数如何帮助创建最终解决方案:

= ARRAYFORMULA(IFERROR(SPLIT(IMPORTDATA(URL-HERE),CHAR(9),FALSE,FALSE)))

IMPORTDATA()-从Web提取数据文件的主要功能

SPLIT-按选项卡分隔行,请注意使用char(09)生成选项卡字符;还需要注意的是,在我的情况下,最后一个参数使用FALSE,以确保空单元格不会一起折叠

IFERROR-用于捕获导入可能失败的情况,该错误将被捕获且不会返回到电子表格

ARRAYFORMULA-此函数可确保对文件中的每一行进行解析;否则,只有文件的第一行会返回到电子表格

答案 3 :(得分:0)

我很幸运使用split()并指示只有一个空格作为分隔符,即使我粘贴的数据有分隔每个“列”的标签:=SPLIT(A1, " ", True)其中A1的数据间隔1个或更多空格。似乎粘贴TSV数据会导致从制表符转换为空格。

答案 4 :(得分:0)

IMPORTDATA(url)似乎会自动处理标签,正如其他人之前提到的那样,如果网址以" .tsv"结尾。

我尝试从Dropbox导入文件时遇到问题,即使文件名为" something.tsv",因为网址是

"https://www.dropbox.com/s/xxxxxxx/something.tsv?dl=1"

我设法通过向url添加虚拟查询参数来解决问题:

"https://www.dropbox.com/s/xxxxxxx/something.tsv?dl=1&x=.tsv"