Csv 在Google工作表中解析选项卡分隔的文本文件
我在web上有一个txt文件,其中包含选项卡分隔值(TSV/CSV),如下所示: 产品IdCsv 在Google工作表中解析选项卡分隔的文本文件,csv,google-sheets,Csv,Google Sheets,我在web上有一个txt文件,其中包含选项卡分隔值(TSV/CSV),如下所示: 产品IdtabColortabPricetabQuantityItem1tabRedtab5Item2tabBluetab7.5tab10 我使用IMPORTDATA(url)公式将txt文件导入谷歌电子表格。问题是,现在我需要将文本拆分为列。我尝试了以下公式,但没有成功: Split(A1,"\t") Split(A1," ") Split(A1,"<tab>") Split(A1,“\t”)
tab
Colortab
Pricetab
QuantityItem1
tab
Redtab
5Item2
tab
Bluetab
7.5tab
10
我使用IMPORTDATA(url)
公式将txt文件导入谷歌电子表格。问题是,现在我需要将文本拆分为列。我尝试了以下公式,但没有成功:
Split(A1,"\t")
Split(A1," ")
Split(A1,"<tab>")
Split(A1,“\t”)
拆分(A1,“”)
拆分(A1,“”)
我尝试过的另一件事是使用Substitute
函数,但我就是不知道如何匹配Google电子表格中的Tab
字符。结果是可以导入一个选项卡分隔的文件,但它希望文件名具有.tsv
扩展名。这与Excel不一致,Excel中以制表符分隔的导出结果为*.txt
如果您可以确保使用.tsv
扩展,那么您的问题就解决了
您还可以使用“工作表”UI导入文件(到新的电子表格中)。选择File>Import…
,然后Upload>从计算机中选择一个文件
。打开文件选择对话框后,将URL粘贴到文件名
字段中,然后单击打开
。该文件将下载到您的电脑,然后通过“导入”对话框上载到驱动器,该对话框将允许您选择分隔符
(在使用Chrome的Windows 8.1上进行了验证;我不知道这在其他操作系统或浏览器上会有什么表现。)
编辑:请参阅 使用从用户GDrive中的CSV文件读取的内容填充工作表。如果未提供任一参数,函数将打开InputBox以交互方式获取它们
自动检测以制表符或逗号分隔的输入。我很幸运地使用了split()并仅指示一个空格作为分隔符,即使我粘贴的数据中有分隔每个“列”的制表符:
=split(A1,”,True)
其中A1的数据由1个或多个空格分隔。似乎粘贴在TSV数据中会导致从选项卡到空格的转换 使用标准粘贴粘贴文本时,默认情况下,页面会剥离选项卡。可以使用以下方法粘贴和自动分析制表符分隔的数据:
如果url以“.tsv”结尾,则右键单击->粘贴特殊->仅粘贴值导入数据(url)似乎会自动处理选项卡,如其他人之前所述
即使文件名为“something.tsv”,我也无法从Dropbox导入文件,因为url是
"https://www.dropbox.com/s/xxxxxxx/something.tsv?dl=1"
我通过向url添加一个虚拟查询参数来解决此问题:
"https://www.dropbox.com/s/xxxxxxx/something.tsv?dl=1&x=.tsv"
注意:我知道这个问题是在2014年提出的,大约5年后我会回答这个问题。我把答案贴在这里,希望谷歌搜索到的其他人能避免头痛,并能从我设计的解决方案中得到帮助 问题摘要:默认情况下,仅当文件名以扩展名.TSV结尾时,IMPORTDATA()函数才会正确处理以制表符分隔的文件 2019年11月14日更新: 在下面的一条评论中,Poul分享说,他找到了IMPORTDATA()函数的一个分隔符,您可以通过它指定分隔符来分割数据。在编写本文时,未引用此分隔符。 实际上,文档应该如下所示:
IMPORTDATA("url","delimiter")
因此,如果您想强制在制表符上拆分文件,它看起来像
IMPORTDATA("url","\t")
事先回答: 更新:我将保留我的原始答案,以防上面的答案(包括未记录的功能)无法继续工作可能会有所帮助 原始答案:经过无数次尝试,我终于想出了如何诱使Google Sheets导入以制表符分隔的文件,而不考虑扩展名 对于那些寻找快速而肮脏答案的人,请将以下内容复制到谷歌工作表的一个单元格中进行尝试:
=ARRAYFORMULA(IFERROR(SPLIT(IMPORTDATA("https://iso639-3.sil.org/sites/iso639-3/files/downloads/iso-639-3_Latin1.tab"),CHAR(9),FALSE,FALSE)))
对于那些想了解更多的人,我将尝试解释每个嵌套函数如何帮助创建最终解决方案: =数组公式(IFERROR(拆分(导入数据(URL-HERE)、字符(9)、FALSE、FALSE))) -从web中提取数据文件的主要功能 -按制表符拆分行,注意使用char(09)生成制表符;还请注意,最后一个参数使用了FALSE,这在我的案例中是确保空单元格不会折叠在一起所必需的 -用于捕获导入可能失败的情况,错误将被捕获而不会返回到电子表格
-此功能确保解析文件中的每一行;如果不这样做,只有文件的第一行将返回到电子表格
IMPORTDATA()
如果文件扩展名为.tsv
,则应自动处理选项卡。有什么方法可以控制吗?已确认-名称为*。tsv
的同一个文件可以正确导入。这是一个非常简单的解决方案!“我在这里发布的答案,希望其他人谁谷歌他们的方式在这里”好的一点!出于同样的原因,帖子将在这里发布:我们发现IMPORTDATA()函数可以接受参数,该参数直接指定分隔符(虽然规范中没有说明),即IMPORTDATA(“url”,“delimiter”)作为制表符分隔符,它应该是“\t”,谢谢您的回答。我已经更新了上面的答案,包括您非常有用的发现。问题明确提到使用公式中的IMPORTDATA(url)
函数导入数据,而不是手动导入。这个答案似乎并没有解决这个问题。
=ARRAYFORMULA(IFERROR(SPLIT(IMPORTDATA("https://iso639-3.sil.org/sites/iso639-3/files/downloads/iso-639-3_Latin1.tab"),CHAR(9),FALSE,FALSE)))