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

Bog*_*dan 5 csv google-sheets

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

Product_Id tab颜色tab价格tab数量
Item1         tab红色   tab$ 5.2  tab5
Item2         tab蓝色  tab$ 7.5  tab10

我使用该IMPORTDATA(url)公式将txt文件导入了Google Spreadsheet 。问题在于,现在我需要将文本拆分为列。我尝试了以下公式,但未成功:

Split(A1,"\t")
Split(A1,"    ")
Split(A1,"<tab>")
Run Code Online (Sandbox Code Playgroud)

我尝试过的另一件事是使用该Substitute函数,但是我只是想不通如何匹配TabGoogle Spreadsheets 中的字符?

Sam*_*amO 9

默认情况下,当您使用标准粘贴粘贴文本时,Pages 会去除选项卡。可以使用以下方法粘贴和自动解析制表符分隔的数据:

右键单击 -> 选择性粘贴 -> 仅粘贴值


Joã*_*ues 8

IMPORTDATA(url) 似乎自动处理选项卡,正如其他人之前提到的,如果URL以“.tsv”结尾。

即使文件名为“something.tsv”,我也无法尝试从 Dropbox 导入文件,因为 url 是

"https://www.dropbox.com/s/xxxxxxx/something.tsv?dl=1"
Run Code Online (Sandbox Code Playgroud)

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

"https://www.dropbox.com/s/xxxxxxx/something.tsv?dl=1&x=.tsv"
Run Code Online (Sandbox Code Playgroud)


Joh*_*ell 5

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

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

2019 年 11 月 14 日更新: 在下面的评论中,Poul 分享说,他发现了 IMPORTDATA() 函数的一个未记录的参数,您可以通过该参数指定分隔符来分割数据。截至撰写本文时,官方文档尚未引用此分隔符。 在此输入图像描述

实际上,文档应该如下所示:

IMPORTDATA("url","delimiter")
Run Code Online (Sandbox Code Playgroud)

因此,如果您想强制在 TAB 字符上分割文件,它看起来像

IMPORTDATA("url","\t")
Run Code Online (Sandbox Code Playgroud)

先前的答案:

更新:我留下原来的答案,以防万一如果上面的答案(包括未记录的功能)无法继续工作,它可能会有所帮助。

原始答案:经过看似无数次的尝试,我弄清楚了如何诱使 Google Sheets 导入制表符分隔的文件,而不管扩展名如何。

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

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

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

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

IMPORTDATA()- 从网络获取数据文件的主要功能

SPLIT- 按制表符分割行,注意使用 char(09) 生成制表符;还要注意最后一个参数使用 FALSE,在我的例子中这是必需的,以确保空单元格不会折叠在一起

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

ARRAYFORMULA- 该函数确保文件中的每一行都被解析;如果没有这个,只有文件的第一行会返回到电子表格


Mog*_*dad 1

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

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

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

(在带有 Chrome 的 Windows 8.1 上进行了验证;我不知道这在其他操作系统或浏览器上的表现如何。)


编辑:请参阅此要点

 importFromCSV(string fileName, string sheetName)
Run Code Online (Sandbox Code Playgroud)

使用从用户 GDrive 中的 CSV 文件读取的内容填充工作表。如果未提供任一参数,该函数将打开输入框以交互方式获取它们。

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